def run(input = {}, options = {})
      if input.kind_of?(Hash)
        options = options.merge(input)
      else
        options.merge! :input => input
      end
      
      temporary_options(options) do
        puts banner if options.key?(:banner) ? options[:banner] : default_options[:banner]
        enter_input_loop
      end
    end
def run(input = {}, options = {})
      if input.kind_of?(Hash)
        options = options.merge(input)
      else
        options.merge! :input => input
      end
      
      temporary_options(options) do
        puts banner if options.key?(:banner) ? options[:banner] : default_options[:banner]
        enter_input_loop
      end
    end
Runs a series of commands in the context of this Console. Input can be either a string
 or an input stream. Other options include:

   :input     => a string or an input stream
   :output    => a string or an output stream.
   :banner    => boolean: whether to print a welcome banner.
   :silent    => boolean: whether to print any output at all.
   :namespace => any object (other than nil). Will be used as the default namespace.

 Note also that any value can be a proc. In this case, the proc will be called while
 applying the options and the  return value of that proc will be used. This is useful
 for lazy loading a value or for setting options based on some condition.