Fix for #1447 - Adding functional tests that verify per-request services

These tests verify that per-request services can be injected into assets
that users provide/implements (filters, constraints, controllers, views,
etc).

The purpose is to verify that the services are correctly resolved from the
per-request service container, and don't have state that lingers and
influences the next request. This is important because changing the
lifetime of a framework services could easily impact the lifetimes of
others, and ultimately of something the user created.
> You don't validate that you throw right (making sure i'm not missing anything)? Maybe Contract.Assert(requestIdService.RequestId != null) would be better to not give the wrong idea that this is a tested code path.

If we throw here it will result in a failing test. In memory this will throw all the way up to xunit. When deployed to a server, it's a 500.