[BUGFIX] ClassLoader should check sub namespaces
This change cleans the ``ClassLoader`` up and fixes a problem with
nested autoloading namespaces. Before a nested namespace got preference
and was only tried for loading a class. Now every possible path is
tried for nested namespaces.
An example are the two packages:
Which declares autoloading as: ``"GuzzleHttp\\": "src/"``
Which delcares autoloading as: ``"GuzzleHttp\\Subscriber\\Log\\": "src/"``
As the second declaration was nested in the first one it got precedence
for all classes inside of ``GuzzleHttp\\Subscriber\\`` making it
impossible to load classes inside that namespace from the first package.
With this change both paths are tried in order of their nesting level.
Kudos go to Jens Schulze for reporting, preparing an initial fix and the
Releases: master, 3.0, 2.3