def process_options(options)
      options.each do |key, value|
        key = key.to_s
        fail OptionException, "No Option #{key}" unless self.class.options[key]
        opt = send("#{key}")
        opt.value = value
        fail OptionException, "Bad value for option #{key}" unless opt.valid?
      end
      validate_required_options
    end
def process_options(options)
      options.each do |key, value|
        key = key.to_s
        fail OptionException, "No Option #{key}" unless self.class.options[key]
        opt = send("#{key}")
        opt.value = value
        fail OptionException, "Bad value for option #{key}" unless opt.valid?
      end
      validate_required_options
    end
Processes given parameter into the defined options previously declared
 includes validation for types and any custom validators delcared

 @param [Hash<String,Object>] Hash of option name/value pairs, values
 must conform to validation rules for options or exception will be raised