Major pass through the code:

1. Refactor the model's `retrieve` method to no longer take a lookup key
or a bunch of silly nonsense about the model itself. The model of a
prototype object is its parent.
2. Write a test to ensure that key generation is consistent.
3. Tweak `key-chain` to make its output more tractable.
4. Write a flattening function to correctly parse the output of key-chain.
Clean up a couple more weird things -- make returns more sensible if a
resource isn't found. Don't just don't NPE.