Code for multimethod reloads

A bunch of complexity to handle the fact that Clojure will wipe
out the metadata on multimethods if you reload them