Handle S-ENTER in code mode as well.

We should probably do what Emacs does and automatically translate anything
which lacks a shifted binding but has an unshifted binding into the unshifted
version because it's easy to accidentally hold down the SHIFT key a bit too
long when you're typing fast.
Revamped completer to complete things not strings.

This makes it a lot easier to complete things with complex string
representations without having to turn those complex strings back into a
choice.