move tinympl::apply out of functional.hpp