Improved memory usage for the Binary reader.

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.