Notify a resource by the `resource[name]` key it was written as

ResourceCollection currently fills 2 functions - it keeps an ordered list of resources to converge during the 2nd Chef phase, and it keeps a unique set of known resources keyed by the resource type and name (IE, `package[vim]`).

As part of fixing https://github.com/opscode/chef/issues/1817 I am attempting to seperate ResourceCollection into two classes that encompass the different purposes.  ResourceCollection is now a thin proxy in front of these two classes to keep backwards compatibility.

**EDIT**

I am keeping all backwards compatibility for ResourceCollection.  The implementation details still utilize 2 classes for the 2 purposes.  I also made the changes to support notifying resources by the key they were written with (which was the original problem).
My idea was to keep consumers from being able to access these internal implementation details.  Do you think its better to use accessors?

Because we're still proxying all calls through ResourceCollection I was afraid someone would manually insert a Resource via `run_context.resource_collection.resource_set` and not update the `resource_list`, messing up their ResourceCollection.  Is that a valid fear?