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.