WA21: WebAPI: NameValuePairsProvider: Avoid Lazy<T>.

WebAPI scenarios are impacted by Lazy<T> and associated allocations. Lazy<T> instances are 1.31% of allocations and have associated locks, delegates and closures. This change removes 4 Lazy<T> objects, 4 delegates, 4 closures and 4 lock objects per request.
WA19: WebAPI: ModelValidationNode.ValidateThis: Use for loop over array.

WebAPI scenarios are impacted by enumerator allocations. Array enumerator allocations represent 1.31% of allocations. This changes removes per request enumerator allocations and speeds up looping in the common case where the result is an array from the validator cache.
WA12: WebAPI: MediaTypeFormatter and DefaultContentNegotiator: Loop on underlying 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 many enumerator allocations per request and also reduces loop CPU overhead signficantly. DefaultContentNegotiator.Negotiate is very performance sensitive, taking 7.54% of inclusive CPU.
DS02: ListWrapperCollection for faster looping.

ListWrapperCollection inherits from Collection<T> but makes its underlying list available as an internal property. This allows looping speed to be increased by 4X.