Added orLeft and orRight.

These are useful for promoting success/failure into an Either.
Use mode keymaps directly.

There's no great benefit to reconstructing the keymaps from the bound key
triggers. It does eliminate invalid key bindings, but we shouldn't have invalid
key bindings as a matter of course.
A big revamp of keymap parsing.

This introduces the ability to reference fns from other modes. For example:
meta:find-file references the find-file fn defined in meta-mode.

It also revamps keymap parsing to use Either (and to slightly improve error
messages). It's still a pig's breakfast in there, but I can't seem to find a
way to express more clearly or elegantly a computation that can fail six ways
to Sunday. I tried.