Use lazy initialization for the deprecated default configuration.
Prevent sneaky bugs caused by that the deprecated static singleton BeansWrapper is created when not all static fields of BeansWrapper is initialized yet.
Summary: The recent BeansWrapper-instance and class-introspection-cache-caching work was dropt, I have redone that differently now. But there's no actual caching yet, so it should behave just like 2.3.20.

Details: As model factory caches are (and must be) bound to a particular BeansWrapper instance, they can't be singletonized like the class introspection caches. I have have extracted the whole class introspection facility out of BeansWrapper into the new ClassIntrospector class (and into UnsafeMethods), so instances of that can be properly cached and protected from sneaky BeansWrapper-instance-specific influences (and away from its awkward concurrency approach). The model factory caches remain inside BeansWrapper. I will try to add a real BeansWrapper-instance-level cache as now BeansWrapper-s contain the model factory caches and thus are precious again. Behind that, I will try to add the second level ClassInrospector cache. Right now only their getInstance() stubs are there, but they are always just creating a new instance.

Further notes:
- GIT can't track the extraction of the class introspection, so I'm telling here that it's the same as it was inside BeansWrapper, barring some code beautifying and JavaDoc improvements.
- As a consequence of all these, how constructors works in BeansWrapper has a changed quite a bit.