Apps can hook in their own locator.

Adds #7.
The locators are for a specific app, so `gid://foo/Model/id` would be located using the block above and `gid://bar/Other/id` would be located using `BarLocator`.

```ruby
def use(app, locator = nil, &locator_block)
  raise ArgumentError, 'No locator provided. Pass a block or an object that responds to #locate.' unless locator || locator_block
  @locators[app.to_s.downcase] = locator || BlockLocator.new(&locator_block)
end
```