Use std::move more liberally
More optimizations involving std::move