[Do not merge] First cut at dynamic sharding support

I need to write down tests to finish that up but @Sanne could you give me your first impression on the proposal. I did not have to break any existing public interface. I even reuse the `IndexShardingStrategy`.

If you have some advice on making the structure more scalable concurrency wise, I'm interested too.