[Utility] Add new function apply_to_tuple()

apply_to_tuple() accepts a functor and applies it to each element of a
std::tuple. It can be controlled by an optional third parameter that
applies a policy to the iteration. Right now, there is an additional
policy that causes the function to pass the index of the current tuple
element to the functor in addition to the element itself.