Add NegotiatedContentResult class and ApiController factory method.
#850 Tracing decorator for ControllerDescriptor should not call descriptor's Initialize
DCN07: WebAPI: DefaultContentNegotiator.Negotiate: Remove empty formatters case.

The empty formtter case would be very rare in practice and slightly slows down the common case.
WA28: WebAPI: Eliminate RunSynchronously.

All remaining uses of the RunSynchronously helper were on performance-sensitive code paths. This change saves 2 allocations and a delegate invokation for each site. The helper can be removed.
WA27: WebAPI: ApiControllerActionSelectors: Avoid closures.

WebAPI scenarios are impacted by allocation of closures.

This change saves 2 closures per request by refactoring out Linq and avoiding ConcurrentDictionary.GetOrAdd. This will also speed up the codepath using GetOrAdd by avoiding a delegate allocation.
DS03: ConcurrentDictionary copy: Implement TryGetValue.

Needed by subsequent changes.
WA03: WebAPI: ApiController: Replace Linq and foreach with faster looping over filters.

WebAPI Async SelfHost is impacted by overhead of Linq and foreach operations over data stored in List<T>. List<T> enumerators are 4.83% of allocations, Linq iterators are 1.25% of allocations and Linq helpers are 3.23% of exclusive time. All are reduced by this change.
 Also reduces the regression caused by new filters.