Refactor reflection cache to use a static, thread-safe dictionary of ColumnMapping

1. The reflection cache was thread-static, but it only needs to be thread-safe.
=> The [ThreadStatic] Dictionary is replaced by a static ConcurrentDictionary that avoids to reload the cache on new threads.

2. The reflection cache only contained MemberInfo instances.
=> The cache now stores ColumnMapping instances that contains all the mapping related properties. Repeated calls to GetCustomAttributes() are removed.
Add an attribute to explicitly ignore properties or fields from mapping