[refactor] segregating logic into smaller classes

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

Thanks @Attamusc for A LOT of the help
[refactor] requiring main module should only expose DSL base tasks
[refactor][feature] dsl_registry, dsl updates & specs

- dsl_registry is created with each dsl instance
- dsl instance contains all logic to create an environment for CI scripts
- when new tasks are created, each singleton_method associated with that task pushes
  an instance of the task (with the given configuration) into the task registry
[refactor] dsl & dsl_registry makes the generator obsolete
[refactor] dsl_runner utlizes dsl_registry
[refactor] application a dsl_runner & dsl only. Yay!

- CLI updated to account for this
- not using highline anymore
[tests] dsl_default tests
[refactor] removing highline, rubocop as direct dep
[refactor] dsl < dsl_defaults
[refactor][tests] move exit_code into runstate, add specs
[feature] application exits with correct code based on runstate
[cleaning] .singularity.rb
[cleaning] removing empty fx - implementing in next PR
Merge pull request #6 from behance/app-refactors

Complete refactor of lib!