Improve performance of overload resolution, fix various aspects of it

0) Greatly increased performance of the method overload resolution.

1) Redundant code removed from TypeConverter - it does nothing, but strikes performance. Probably some garbage left after refactoring/restructurization.

2) NullReferenceException in TypeConverter.FindBestMatch when trying to find overload to invoke with null-argument.

3) AmbiguousMatchException in IndexDescriptor.ctor when class has multiple public indexers. Also get rid of inconsistency of working with getters and setters separately (i.e. read from one, write to another).
I am not mentioning removing anything, the dictionary could be both altered (_adding_ something) and read, concurrently. As per the documentation: 
> A Dictionary<TKey, TValue> can support multiple readers concurrently, as long as the collection is not modified