Replace list of require_once statements by an autoloader

Loading all classes at once on startup would fatal if there
were missing dependencies in one of those files. Loading
files dynamically when the classes they contain are needed
allows for displaying error messages if a dependency can not
be found.