A slightly less broken auto indent.

The changes here try to make auto indent a little bit
smarter. The whole model of indent rules being based
on lines ("prev" and "prev prev") is fundamentally
broken, though, so there's just so much that can be
done without rewriting the whole thing.

The code here tries to make a smarter decision when
seeing code of the following kind:

  if (foo &&
      bar) {
    // Should indent based on "if", not previous line.
  }

The main change in the code is that the aligned bracket
rule needs to look at the unaligned brackets to get more
context, and vice-versa. Otherwise they're just making
wild guesses of what the indent should be, based on a
specific code convention (jEdit's) that isn't used
everywhere.

This code does break code of this sort, though:

  if (foo)
    // Should be indented, still is.
  // Should not be indented, but new code botches that.

Since using blocks without curly braces is somewhat
Bad Practice (tm), I don't care that's broken. Fixing
it is probably possible, but I'd rather spend time
thinking about how to properly implement indent rules.
Maybe.

Conflicts:
	org/gjt/sp/jedit/buffer/JEditBuffer.java
Calculate the correct indent after multi-line comments.

The next line should be indented at the same level of
the line where the comment opens, not where it closes.
Smarter auto-indentation after multi-line statements.

This change adds a new indent rule that is smarter when
setting the indent level of a line following a multi-line
statement. Imagine the following code:

  String string1 =
    longString1InitializerOnASeparateLine();
  String string2;

Before this change, jEdit would aling the "string2" line
at the same indent level as the "long..." line before it,
while the correct is to align it with the start of that
statement.

This change requires a new property in the mode file to
tell the rule how to parse statements, otherwise it's
ignored.
Expand the statement-based indent rule to also indent blocks.

Use the same "base indent" discovery mechanism when calculating
the indent inside blocks, and after blocks are closed.
Scala mode: cleanup and fix indentation.

Also add a few simple highlighting enhancements.
Scala mode enhancements.

- s, f and raw string interpolators
- XML highlighting

Note XML highlighting cannot (at least in any way I can figure out)
properly parse attributes.