Add support for sparse entries.

This also should also improve the memory efficiency, but I didn't bother getting numbers on that, I needed it for the functionality anyway, it's just a happy coincidence. :smiley: 
When building the index, that's probably very little more than what is necessary. If there's no fragmentation, it's exactly the right number, and if there is some fragmentation, it is a bit less than what will end up being needed when the missing entries are obtained. So, I reckon this is pretty good. :smiley:

In the ```CreateSequenceEntry_``` calling path of ```InsertEntryMapping```, things are a bit less shiny... I'm reserving the number of contiguous plus sparse entries (plus the new one), which will pretty much guarantee an allocation on every call to ```InsertEntryMapping```. At least, the loop in it shouldn't cause any allocations...

I was considering reserving enough for the highest numbered sequence, but that seemed slightly risky to me... Maybe with a cap (like no more than 1,000 over the size of the contiguous entries)?

Can be improved later, keeping it like this for now...