Description:
------------
At the moment it is not possible to implement dependency managers that can handle different versions of the same package. If the callee (file location) would be provided as second parameter for autoload callbacks a autoloading implementation could determine the correct version to load.
Some real world example:
You start a new composer based project and require some third party package.
That package requires another package, for example some api.
So long all is good
Now you require one more package, that requires the same package but in another version => not possible.
A fix would be downwards compatible because the additional parameter would simply be ignored by current implementations.
Test script:
---------------
// something like this
spl_autoload_register(function($className, $originPath){
get_real_autoloader($originPath)->load($className);
});

debug_backtrace in action: https://3v4l.org/ov3Me
I'd hardly call two lines of code a "hack" for a feature that is specialized at best and conducive to unexpected bugs at worst.
Regardless, the side-by-side problem needs much more than just a second argument to the autoloader. How will you have multiple versions of the same class available at once? How will PHP know that the same class name needs the autoloader invoked multiple times from different paths, let alone which one's code to execute when a class is referenced?
Not even Windows' SxS solution supports having multiple versions of a library running concurrently for a single application.