WA09: WebAPI: PathContentSegment.IsCatchAll. Remove Linq over IList<T>.

WebAPI Async SelfHost is impacted by the overhead of Linq and foreach over List<T>. List<T> enumerators are 4.83% of allocations, and Linq helpers are 3.23% of exclusive time. These are reduced per request by this change.
WA18: WebAPI: NameValuePairsProvider.InitializeValues: Avoid Array enumerator allocation in common case.

WebAPI scenarios are impacted by enumerator allocations. Array enumerator allocations represent 1.31% of allocations. This changes removes per request enumerator allocations since the enumerable is an empty array in most cases.
WA20: WebAPI: ApiControllerActionSelector.RunSelectionFilters: Avoid foreach over List<T>.

WebAPI Async scenarios are impacted by foreach over List<T>. List<T> enumerators are 3.89% of allocation. Allocations and and loop overhead are reduced by this change.
WA23: WebAPI: ModelValidatorCache: Avoid ReaderWriterLock.

In WebAPI Async scenarios, the ModelValidatorCache lookups take 0.9% inclusive time and uses a ReaderWriterLock over a Dictionary. Switching to a ConcurrentDictionary reduces this to 0.45% and considerably simplifies the code.
DS01: As helpers for faster looping.

The AsArray, AsCollection, AsIList and AsList helpers allow fast looping on types passed as IEnumerable<T>.
WA10: WebAPI: DefaultContentNegotiator.MatchType: Remove Linq.

WebAPI Async SelfHost is impacted by the overhead of Linq. Linq helpers are 3.23% of exclusive time. These are reduced per request by this change.
WA11: WebAPI: MediaTypeFormatter.SelectCharacterEncoding: Remove Linq and delegates.

WebAPI Async SelfHost is impacted by overhead of Linq, delegates and closures. Linq helpers are 3.23% of exclusive time and Delegates are 8.05% of allocations with corresponding closures. All are reduced per request by this change.
WA16: WebAPI: ModelValidationNode: Avoid foreach over List<T>.

WebAPI Async SelfHost is impacted by the overhead of foreach over List<T>. List<T> enumerators represent 3.89% of all allocations. This change removes some enumerator allocations per request and also reduces loop CPU overhead.
WA17: WebAPI: CompositeValueProvider.GetValue: Avoid foreach over List<T>.

WebAPI Async SelfHost is impacted by the overhead of foreach over List<T> including those wrapped in Collection<T>. List<T> enumerators represent 3.89% of all allocations. This change removes some enumerator allocations per request and also reduces loop CPU overhead.