Add tuple_ref<> and separate the code.

tuple_ref<> is used instead of std::tuple<> as the reference type.
Specialize tuple_element<>, tuple_size<>, get() and swap() for tuple_ref<>.
Add locmem namespace.
Use indexing_iterator<> as iterator/const_iterator type in tuple_vector<>.
Add tuple_vector:: begin(), end(), rbegin(), rend(), size() + variants with const modifiers, also for operator[].