Enumerate over dictionary keys and values without allocations

## "Work In Progress"

This pull request offers an alternative to #147. It eliminates the allocations when evaluating the `Keys` and `Values` properties of `ImmutableDictionary<TKey, TValue>`, but does so without increasing the allocated size of an `ImmutableDictionary<TKey, TValue>` instance.

The documentation associated with the members created by this pull request do not currently meet my own quality standards, but I sent the pull request before going through that part in detail in order to get early feedback. If the community believes this approach is the desired implementation for this functionality, I will go back through the documentation in detail.
You could just change the return type to IEnumerable<TKey/TValue> and it should be binary compatible