Support optional route constraints in MVC

This PR
1. Adds tests for inline constraint
2. Fixes tests broken by Routing change for inline constraints

There's a lot of test here and it's adding a lot of good coverage for various constraints.

You can consider for this sort of thing (where the test code is the same many times), to write these as parameterized tests using `[Theory]`.  

I generally use `[Theory]` when all my tests have the same *meaning*, but applied to a range of data -- in this case different types of constraints. 

Use your judgement if you want to keep this the same or change it to use `[Theory]`.