Big hairy rewrite/refactor, leaving no stone unturned.
Move everything to PSR-4 except some legacy compatibility