Introducing IGlimpseRequestContext abstraction

- Renamed GlimpseRequestContext.ActiveRuntimePolicy ->
CurrentRuntimePolicy
- Introduced the IGlimpseRequestContext and made GlimpseRequestContext
internal
- Added some safe safeguards to make sure no Glimpse code is executed
when Off
Moved execution timers into glimpse request context / removed strategies

- Moved execution timers into GlimpseRequestContext
- Removed TimerStrategy and RuntimePolicy from Configuration and now
rely on GlimpseRuntime.Instance.CurrentRequestContext to return the
appropriate execution timer or runtime policy (which means that the
logic to create an fallback value for those strategies is now handled by
the implementations of the IGlimpseRequestContext
- Added extra logging when accessing unexpected properties of the
UnavailableGlimpseRequestContext, which would point to bad usage and no
checking of the CurrentRuntimePolicy of the CurrentRequestContext
Added locking in the ActiveGlimpseRequestContexts when adding/removing a ctx
Removed AbsolutePath from IRequestMetadata and made RequestUri a real Uri
Moved RuntimePolicy determination code out of GlimpseRuntime
Added IResourceEndpointConfiguration abstraction

- Moved check for resource request from GlimpseRequestContext to
IResourceEndpointConfiguration implementation
Extracted storing of Glimpse request id from ActiveGlimpseRequestContexts class

- Changed ActiveGlimpseRequestContexts from static to normal class
- Added CallContext implementation of ICurrentGlimpseRequestIdTracker
- Added AspNet HttpContext.Current based implementation of
ICurrentGlimpseRequestIdTracker