[interim] Refactored for asynchronous loading

- add async module
- move 'depends' logic to Script class
- refactor read_source to use async, and cleaned up logic in general
- refactor optimize_map to use async
- updated args for optimize/_file/_source; made all check for
dependencies, and asynchronous
- add new spec directory with new test runner runner
Update to testing framework

- test parity for 'Idem'
- optimize script after load and before callback
- add new kinds of tests
- add depends/provides_list to Script
- add optimization_strategy_names to Script
- update missing-module strategy
-  change CLI to use optimize_map for file list
- deprecate our own _traverse method in favour of travese module
- add new tests to spec
- fix serious issue with traverse.forEach that when you return a new
value ... replaces ast.body. oh.
- push the async callbacks down to the readFile; we now load
asynchronously
- change plugin loading and api
-
- note more loaders in the README
- add ignore-dependencies option
- respect ignore_missing option
- various fixes
- added more items to README
- re-added some tests from sync mode, in 'pending' state
- added sample.yaml
- ensure Cakefile captures result of test process
- add 'echo' command for quick debugging
- add error for .yaml since we do not yet test it
- improvements to testing of .yaml files
- better echo color - stands out
fix loading from_config now from cli
- broke out main into a separate function for cli, which is exported as
exports.__main__
- added 'quiet' option
- noted 'ignore-missing' option when fails because of dependencies
- use flatten and unique on return from from_config
- add tests to spec/sample.yaml
- add 'echo' to test.coffee
- fix issues with .yaml testing
increment version and publish