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.
Revert "Fix for issue 85 - Dictionary types should return null on key not found"

This is causing issues with routing functional tests in CoreCLR. Suspect
CoreCLR compat issue.

This reverts commit ae65001e849591d929858bfdddd930cd7328d992.
Revert "Revert "Fix for issue 85 - Dictionary types should return null on key not found""

This is reverting the revert. We're going to go ahead with this change and
work around it in MVC.

This reverts commit 0e826e69e69a90f96444b912a188c2bf234da35d.
Routing Logging
Added scoped logging to RouterMiddleware, RouteCollection, and
TemplateRoute.
Added routing logging and corresponding tests.
Changes to RouterMiddleware, RouteCollection, TemplateRouter, and
RouteConstraintMatcher.
Cleaning up string formatting methods in LogFormatter.
Organize usings, add copyright header, remove duplicate class
NullLoggerFactory.
kproj was not updated to reflect removed files.
Changed log value setting.
Makes the meaning of the properties immediately obvious.
Cosmetic changes to RouteConstraintMatcher.
StringBuilder'd, Stylecop'd, ect'd
Private method display and RouteConstraintMatcher
Updated RouteConstraintMatcher to show both matched and failed
constraints. Added internal extensions in LogFormatter that rely of closed
off class' ToString() method to expose data.
Undoing closed off object stringifying.
Fixed some doc formatting.
More cosmetic changes.
Updated null check in StringBuilderExtensions.
Forgot to write Matched ToString in TemplateRoute.
StringBuilder and Test verify polish.
More cosmetic changes.
Forgot to change some null tasks.