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.
If you want to reduce by 1 file this could always be:

```C#
app.Use(async (context, next) => {
	var requestIdService = context.RequestServices.GetService<RequestIdService>();
	if (requestIdService.RequestId != null)
	{
		throw new InvalidOperationException("RequestId should be null here");
	}

	var requestId = context.Request.Headers["RequestId"];
	requestIdService.RequestId = requestId;

	await next();
});
```