Introduce SnapshotWritable for sorting by time/priority and remove PriorityTag

Part 3...

This, or something like it, makes it possible to do snapshot windowing. I hope this is the right idea, although I'm assuming there was probably a very good reason we didn't do the sorting previously.
> Why not BytesWritable, what does the structure buy?

Fair call. As mentioned on the previous comment I started using `BytesWritable` for the whole thing, but decided that using a customer `Writable` was cleaner, but I've switched the `entity` and `featureId` fields to be a byte array (well wrapped in `BytesWritable`) which I think alleviates your first (and legitimate) concern about garbage. I'm not quite sure what you mean by fragile though.

Let me know if it looks better.