Made GetVirtualPath virtual

For extensibility. This method has always been virtual in MVC and Web API.
React to options change
Reacting to CLR package versioning changes
Updating System.Text.RegularExpressions version
Refactoring ILogger, see aspnet/Logging#3
Added negative tests and refactored code
updated constant name, code cleanup
Merge branch 'update-ilogger' of https://github.com/aspnet/Routing into update-ilogger

Conflicts:
	test/Microsoft.AspNet.Routing.Tests/ConstraintMatcherTest.cs
	test/Microsoft.AspNet.Routing.Tests/Logging/TestLogger.cs
	test/Microsoft.AspNet.Routing.Tests/Template/TemplateRouteTest.cs