Greatly improved memory usage in case of locations in binary files.

The maximal sharing was implemented incorrectly in the reader.
It shared the strings, but not the URIs, since we use URIs in SourceLocations and not
the strings, there was no actual sharing.

This big memory consumption on reading a binary file with SourceLocations.