Cleanup Reader part 3

This removes all of the updating of shard state that was done in the reader. It adds a ShardState class. Thinking about it now, that should probably be renamed to SlotState. I'll do that first thing tomorrow.

We now have a proper serializer for what was previously a magic string used as a column name, with all of its implementation details dependent on a Util class.