Adding missing std::move() to implementation of reduce
Reducing amount of dependencies pulled in to minimum.
More work on docs