Highlight some basic keywords

Specifically variable scope, control keywords, and phasers.

The indent code needs a bit of a rewrite is my current guess. Preferably
with a set of "indentation rules" laid out first (hopefully these rules
will work well enough that they aren't annoying for coding styles that
are not exactly mine, although they will likely annoy some for a while)
Fix hanging bug in indentation

In the "skip blank lines going backward until we reach a line of code
that matters" fix there was a new bug that would cause the function to
hang if you tried indenting the first non-blank line in the file, but
only if that non-blank line was preceded by whitespace lines (the very
first line in the file is already handled regardless)
Rewrite indentation code.

Now it should be clear where known special cases were missed, and
hopefully where to discover the cause of previously unknown special
cases.

There are a lot of debug strings that will fill your *Messages* buffer
pretty quickly (you can see the last of these in the minibuffer
immediately after pressing TAB). I'll remove them, or better yet hide
them behind an optional debug parameter, once the indentation code is
good enough.

The testmode file being commited shows the result of C-x h TAB . The
multiline string at the top ruins formatting the rest of the way, and
there are some issues indenting with multiple opens/closes per line (as
seen towards the bottom of the file)