code: function Interpreter(library, options, storage) {
      // What lengths I've gone to to use only 7-letter properties...
      this.library = new Library(CloneDeep(library || {}));
      this.options = Assign({}, Interpreter.DEFAULT_OPTIONS, options);
      this.balance = this.options.balance;
      this.timeout = Date.now() + this.options.timeout;
      this.seednum = this.options.seed || Math.random();
      this.counter = this.options.count || 0;
      this.storage = storage || new Storage();
  
      var outputs = this.outputs = [];
      if (this.options.doCaptureConsole) {
          Console.capture(function(type, messages) {
              outputs.push({ type: type, messages: messages });
          });
      }
  }
docs: An instance of Interpreter can execute a Runiq AST. At a high level,
  it performs instructions defined in the AST by mapping function
  names to function entries in the passed-in Library instance
  
  The interpreter also manages ordering operations in accordance with
  the three basic control patterns available in Runiq:
  - Asynchronous function composition, via nesting:
  ['last', ['third', ['second', ['first']]]]
  - asynchronous function sequencing
  [['first'],['second'],['third'],['last']]
  - quoting (witholding lists for later execution)
  ['quote', ['save', 'me', 'for', 'later']]
  
  @class Interpreter
  @constructor
  @param [library] {Object} - Library dictionary
  @param [options] {Object} - Options object