Refactor to PSR4 and add Composer support