Removing magic link generation
Moving IViewEngine to MvcOptions
Move setting up options to MvcOptionsSetup
Fixes #760
Add extra unit tests and functional tests for CompositeViewEngine
Fixes #768
[#732] Attribute Routing: Implement `~/` for overriding a prefix

This change allows a user to override a route prefix set using
[Route("...")] on the controller by providing a route template
 on the action that starts with "~/" or "/". For example,
 [HttpGet("~/...")] or [HttpGet("/...")]

If the user specifies a template in [Route] that starts with "~/"
or "/", we will just strip the prefix from the template and use
the remaining part of the template.

The reason to do this is that there's a reasonable extensibility
scenario where a user can implement a global prefix for routes as
a convention (using IReflectedApplicationModelConvention), and use
~/ to escape that prefix (just like we support with action-level routes).
Addressed feedback:

1) Updated StartsWith calls to use StringComparer.OrdinalIgnoreCase.
2) Trim the end of the right part of a template when it doesn't start
   with "/" or "~/" and added tests to cover both scenarios.
3) Fixed the format of tests to move all asserts before an // Assert
   comment after it, and remove aditional // Assert comments from the
   tests.
Corrected missing return value and added tests to verify
Refactored the code to simplify it.