Refactor ResourceCollection

This PR brings `ResourceCollection` back to basics, delegating methods to the internal hash where appropriate.