Cleanup and improvements for basic compound key support

In particular, scopes correctly iterate over batches even when there is a
compound key requiring a "next" batch at several levels. Introduce the
Scope#at and Scope#after methods, which may not be an awesome API.