simplified API

removed rule()
renamed apply() to darth()
renamed custom type to callback
changed rules structure to just be a hash, with var names as keys