Hash StringFragment

Implement ``` std::hash ``` for StringFragment.
Allows us to use it as a key in associative containers instead of
converting it to a string first.