CRUNCH-213 Add sharded join

Also refactor join code in general to introduce a JoinStrategy
interface.