Switch from multimethod to protocol

Since the multimethod dispatches on the given message's type anyway we
may as well use a protocol here. This yields better performance in
general and especially in multi-threaded scenarios since in Clojure <
1.4 multimethod dispatch is synchronized (see CLJ-988).

--HG--
branch : protocolize
Merge protocol switch with upstream

--HG--
branch : protocolize
Fix File Digestible implementation

--HG--
branch : protocolize
Merged in DerGuteMoritz/clj-digest/protocolize (pull request #2)

Switch from multimethod to protocol
1.4.3
Added tag 1.4.3 for changeset 1d9208f7c8bd