Fix #1618, Add asp- prefix to custom attributes of MVC tag helpers

- more details in individual commit descriptions
- one highlight is addition of functional test for MVC tag helper sample
@yishaigalatzer yes that's valid and it won't `throw` in that case; `throw`s only when `Action` or `Controller` are `null` or if any `asp-route-*` attributes are found.
in other words, this code `throw`s when the user specifies `asp-*` attributes the helper can't use.  not all helpers behave that way.