re-org code

No functional changes.
keyelements.includes is a hash_map

Before a vector of positions, now it has <include>, pos pairs.

We had to make a hash function for MemRange<char> so we did FNV1a.