Smarter ScopeBuilder

This is a backward incompatible change to the Scopes feature of Mongothon.

### Changes:
 - `execute()` has been eliminated as a method on `ScopeBuilder`. 
 - `ScopeBuilder` itself now implements the iterator protocol and can be iterated over / indexed into directly. 
 - `ScopeBuilder` is also able proxy calls through to an underlying cursor which is created on-demand. 
 - You can also reuse an existing builder to further refine search results, even if that builder's query has already been executed. 

### Upgrade Notes:
You'll need to remove calls to `execute()` on a given scope, and instead use the scope itself directly. 

cc @byels @paetling @nrschultz