Refactor ResourceCollection

This PR brings `ResourceCollection` back to basics, delegating methods to the internal hash where appropriate.

One thing that requires further discussion: I'm using the Ruby Hash `each` method, which yields a two element array per iteration (the key, and the value). I'd appreciate comments on which behavior is preferred.