Fix for issue 85 - Dictionary types should return null on key not found

This change makes RouteValueDictionary a full IDictionary implementation
instead of a subclass of Dictionary.

Followed the patterns used in the old implementation, namely preserving
the struct-returning behavior of Keys/Values/GetEnumerator.
nit: we've hidden the boring parts of our `IDictionary<TKey, TValue>` implementations in regions elsewhere.  probably worth doing the same thing in this class.