Greatly 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).
The lock should be around the TryGetValue because the dictionary could otherwise be accessed by a Read and a Write at the same time, of two reads, and it's not thread safe.
The other solution would be to use a lock-free dictionary based on an immutable dictionary as ConcurrentDictionary is not available on the PCL. c.f. http://stackoverflow.com/questions/18367839/alternative-to-concurrentdictionary-for-portable-class-library