Compatibility with g++4.4.

* g++4.4 can't construct tuple<tuple<...>> from tuple<...>. So a single object is stored directly in shared state, not in tuple.
* Also this ugly compiler doesn't call move constructor of X in expression "X x = std::move(other_x);" o_O So i replaced such expressions with "X x(other_x);".