Implement move assignment in addition to move ctor for g++-4.6
Replace reference with std::reference_wrapper because STL elements
need to be Assignable in g++-4.6 and vanilla references aren't.
This only compiles if it's a reference because thread arguments
need to be CopyConstructible in g++-4.6; Socket is only MoveConstructible.
Unfortunately, using a reference is WRONG, because it refers to a local variable.