Adding autoloader support for <5.3 classes as per PSR. Fixes #289 & allows drop-in old libs.

As issue #289 mentioned, we cannot currently load any classes with an underscore for separation rather than PHP namespaces. This is a limitation, if for example, you have a great old library you want to drop into your application that's not setup for Composer but does in fact follow PSR.

Also, added unit tests for the `ClassLoader` to ensure that it works as designed.