Reimplement options as es6 class CompileOptions.

CommandOptions extend CompileOptions with commander-specific
features.
Add tests for CompileOptions and CommandOptions.
Our current approach to options passes global values through module instance variables
combined with passing them as arguments. Chaos ensues. We need to pick one of these three.
Passing arguments from the API provides the most control and flexibility. We may continue
to use the global deeper in the call stack, after we are below the API calls. 
fromString was not exported in this file before. Now it is part of the public interface. Seems like we should minimize the interfaces as much as we can.