Use boost::adl_move_swap instead of own swap utility
Imported basic algorithms from Boost.Intrusive