Added unit tests for predicate and value matching
Removed the use of a wrapper with the decorator.

dispatch and dispatch_first now return self.
Added a __call__ method