Started work on adding autoloader functionality
Major design change, now uses an autoloader to avoid includes.