Template nitpicks

Two commits here: the first one removes the need of the header <tuple> in common.hpp and adds the missing <type_traits>. The second one replaces const references by forwarding references in the printing functions. The overloads of operator<< are not supposed to modify their parameters, therefore, the const references were ok. However, if an operator<< also has a faster overload with rvalue references, calling it instead may result in better performance. The perfect forwarding, as implement, will always pick the most suitable overload, so it does not remove any correctness and may freely take advantage of rvalue-references overloads.