core: simplify `Component` creation.
core: simplify `Component` creation.

This replaces the `Component.__new__` method with a `ComponentMeta.__call__` method. The latter calls directly the `Component` initializer, so we avoid synthetize one in `ComponentMeta.__new__` which becomes considerably simpler.

Note that we follow the same approach as taken in r10242, i.e. the newly created `Component` is only registered after its initialization. So we still have a possible race condition by which two different Component instances will be created for the same class but only one will be registered for later reuse. As noted on #8658, this is not that problematic and much better than risking to use an uninitialized Component.

Patch contributed by Jun Omae on #9418.

git-svn-id: 0d96b0c1a6983ccc08b3732614f4d6bfcf9cbb42@10295 af82e41b-90c4-0310-8c96-b1721e28e2e2

rbaumg/trac,rbaumg/trac,rbaumg/trac,rbaumg/trac