(defn priority-map
"Usage: (priority-map key val key val ...)
Returns a new priority map with optional supplied mappings.
(priority-map) returns an empty priority map."
[& keyvals]
{:pre [(even? (count keyvals))]}
(reduce conj pm-empty (partition 2 keyvals)))