Fix string_ref::at not checking bounds properly

Fix std::hash specialization not using its own typedef.
Fix compiler error in string_ref::find_first_not_of (This function does
not currently work as advertised)

Add test for string_ref::find_first_not_of (currently failing)
Add test for string_ref::at
Add test for string_ref::ends_with

Add test for string_ref::starts_with
Add additional restriction to optional<T>. No optional<bool> is allowed
Add typelist_index trait to utility component

This trait returns the index of the first instance of T in a given
typelist of Ts...