Clojure-style multi-methods for Emacs Lisp