Fix for #77 - pass ambient values not in the template to constraints

This change adds tests and makes the behavior consistent with legacy MVC
as far as what values are visible in constraints.

This is important because it allows constraints to make decisions based on
whether or not a value is present even if it's not in the template. This
is similar to the behavior of WebAPI link generation or Area link
generation in MVC 5 - but without hardcoding.
Implement a 'required' constraint

This is useful for a variety of interesting scenarios in link generation
where a default value doesn't appear in the route template as a parameter.

This can be used to implement the desired behavior for areas - where the
'area' key is sticky.
Renamed configurations to frameworks in project.json
Reacting to System.Collections version change
cr feedback
Reacting to System.Collections versioning change