don't use undefined :or-destructuring behavior

The fact that one :or-param can predictably refer to another is
*extremely* brittle -- it only works because maps in the code become
PersistentArrayMaps and they have a specific seq order relative to the
order keys are assoced in. With a different map implementation, or with
enough keys to spill over to a PersistentHashMap, this explodes.

http://dev.clojure.org/jira/browse/CLJ-1613

(Copied original PR by MichaelBlume)