Workaround Boost.Optional 1.56.0 MSVC 2010 Issue

This change takes the advice of the Boost.Optional maintainer when
working around the breaking changes in Boost.Optional 1.56.0 --
apparently MSVC has a bug in copy-construction resolution which
considers multiple conversions (not a standard-conforming extension)
and because of changes to the Boost.Optional interface is being hit.

This commit only works around the MSVC 2010 compiler. It may be that
the bug is also in newer versions of the compiler, but that I'm less
sure about.
Enable workaround for higher versions of MSVC.