Feature/support initialization from hash

Use a hash for initialisation, to provide a more declarative syntax for constructing rules engine objects.
options.fetch(:when_true) { } -> options[:when_true]
if we don't want to raise on nil then just use the simpler [].