boost/bind.hpp emits compiler warnings about deprecation of the header
and global _N placeholders. This commit converts usage of this header
to boost/bind/bind.hpp and using namespace boost::placeholders.
Where boost::bind is not actually used, the includes are removed.
Lambda has no default constructor nor a copy or move assignment.
range\test\adaptors.cpp is checking that produced ranges are copiable,
but it is not doing so the for lambda, or lambda like objects.
default_constructible_unary_fn uses an optional for default
construction.
I extended it to use its emplace facility to copy assign non copy
assignable types.
(see boost::optional 'Type Requierment': 'If T is not MoveAssignable,
it is still possible to reset the value of optional<T> using function
emplace():')