Use the `resource_collection` instead of our minimal proxy

Instead of creating a primitive data structure for holding resoures, this changes that structure to use Chef's internal `resource_collection`. This commit also removes the monkey patch on `Chef::Resource#run_action`, and instead monkies the underlying provider. This ensures resources are added to the resource_collection (so notifications and non-run resources are still accessible (#235)).

This commit also fixes a potential edge case where a resource exists at both compile time and converge time with different actions. Prior to this patch, compile-time vs converge-time were tied to the resource, rather than a particular action.

Finally, this commit keeps track of the list of `performed_actions` on a resource, separate from the `actions` list. This is important for notifications and notification chaining.