Feature/support initialization from hash

Use a hash for initialisation, to provide a more declarative syntax for constructing rules engine objects.