[refactor] segregating logic into smaller classes

- CLI -> application -> {generator + runner}
- refactors are allowing for easier TDD

Thanks @Attamusc for A LOT of the help