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: don't anything but first since `IDictionary<TKey, TValue>` inherits from the other three interfaces.