Feature/multi methods

Adds clojure-like multimethods to the library.