    utility functions that are defined implicitly.
 
    (defregistry* 'command)
+   (defregistry* 'command
+                 (fn [event entity-name]
+                   ...))
 
    will result in the following functions to be defined:
 

        (defonce ^:private ~registry-sym (atom (sorted-map)))
        (defn ~register-sym
          [~'name ~'def]
          (swap! ~registry-sym assoc ~'name ~'def))
        (defn ~unregister-sym
          [~'name]
          (swap! ~registry-sym dissoc ~'name))
        (defn ~registered-sym
          []

(defmacro defregistry
  "Defines a registry with the given name. See defregistry* for
   more information."
  ([name]
   (defregistry* name &env))
  ([name callback]
   (defregistry* name callback &env)))
