compiler - cpp11: move assignment will use optional::swap

boost::optional does not have move semantics
std::optional probably will have swap method
compiler - cpp11: StructConstructorGenerator abstract class added
compiler - cpp11: removed dependencies from boost

this should ease cross-compilation for windows