Key.Map.bind() takes fn, key* instead of key, fn.

Quite often one wants to bind multiple keys to the same fn, so it was silly to
have things in the other order and require a totally separate bind line
repeating the fn for mutliple bindings.
Brace -> bracket; do auto-close for all brackets.

Also includes the bind call order change.
If we choke resoling major mode, fall back to text mode.

If we just let the exception propagate, things get all hosed up. It's also
nicer to show the buffer to the user one way or another, even if we can't give
them whatever mode fanciness that was intended.
Update test.
Added countComments.
Added BlockS.isExpr.
Added synIndexOf/synLastIndexOf.
Split ExprS out of BlockS.

Combining them was increasingly cumbersome.