add new files

algorithm.hh provides container versions of standard algorithms and has
some new ones, mpl.hh does the same for type traits, but makes them into
constexpr functions (soon to be changed to variable templates) and using
aliases, udl.hh provides std::basic_string and std::chrono UDLs,
string.hh provides string algorithms not covered by algorithm.hh