Swappable IO for MetadataCache and ShardState* services

I wanted to do this in order to reduce the dependency on Astyanax/Cassandra. Not necessarily to replace cassandra, but to 

- Allow for more flexible testing (cassandra not required),
- Play around with the Datastax Java Driver in another branch,

This should be an easy review.