RFR Reader Cleanup Part 2

This cleans up shard state reading and getting columns from cassandra. 
 * Fewer Astyanax internals leak outside of the `.io` package.
 * AstyanaxReader now lets the ShardStateManager worry about UpdateStamp objects. There could potentially be cleaner separation done here, I'll think about dealing with that in later steps of refactoring.
 * Less code duplication in getColumnsFromDB batched vs non-batched.
 * GetAndUpdateShardState now takes a single shard instead of a collection of them. This should make it easier to handle individual read failures without impacting the rest of pending shard reads.