Refactorings in auto edit strategy tests

The existing auto edit strategy test suites were simplified to match
the implementation in `AutoEditStrategyTests`. In the case of the
`CommentAutoEditStrategyTest` class, its test logic is completely
merged.
Adds auto indent strategy for multi line strings

To make this component possible, it was necessary to disable the
"indent on tab" action of the Java editor, which is done in the
`ScalaSourceFileEditor`.

The Java editor, it its wisdom, handled the tab key entirely by itself
and made it impossible to execute further components when this key is
pressed. Because this was special and even more weird behavior in
comparison on how other key events are handled by the Scala editor it
seemed to be the best to disable the behavior. The downside of this is
that now an additional component is required that handles the tab key.

There is another action, simply called "Indent" by the Java editor,
that handles indentation when a newline key is inserted and the
following line has to be indented. Because this behavior is buggy for
Scala code in a lot of cases it is necessary to disable this action as
well and implement a more Scala aware indentation logic. But this work
is not part of this commit.

The new features can be disabled in the editor preference page. See the
containing tests for a specification of the behavior, which not only
allows to do auto indentation inside of multi line strings but also the
automatic insertion of a stripMargin call to ease correct indentation
of multi line strings.

Fixes #1001099, #1001670, #1002063
Scala editor now considers Scala preference about indentation with tabs

Fixes #1002037, #1001727, #1002017, #1000304
Add auto indent on tab strategy

This component is needed because in a former commit the "indent on tab"
action of the Java editor has been disabled. This auto edit strategy
choses Scala preferences instead of the Java ones and is enabled
whenever the tab key is pressed.

If a user selects a text region or pressed CTRL+Tab, which decreases
the current indentation, logic of the text editor is invoked instead of
the new auto indent strategy. The text editor built-in logic is of good
enough quality, thus it is not necessary to replace it. Nevertheless,
it is not extensible, which is a problem because there are still some
cases where its behavior could be improved a little bit.

If the new line key is pressed the already existing but very erroneous
`ScalaAutoIndentStrategy` is invoked. It can't be replaced easily
because in order to insert the right indentation after a new line a
more accurate, token based, logic needs to be written, which is able to
analyse the token that surround the cursor.

This commit corrects some tests for the multi line string auto indent
strategy, whose indent logic is moved to the new indent strategy.

There is also a new preference added to the editor preferences, which
allows to disable the new indent logic. The result is that when a tab
key is pressed only a single indent step is inserted, which is either a
tab or some spaces - as specified by the Scala formatter preferences.

The only downside of the new logic I can see so far is that in a case
like

    class X {
      def f = {
    ^
      }
    }

the result is

    class X {
      def f = {
      ^
      }
    }

instead of

    class X {
      def f = {
        ^
      }
    }

which was the old and better behavior. But because one needs to hit the
tab key for this special case only two times instead of a single time,
the change shouldn't be too annoying. Having the old logic is difficult
to implement because the previous token have to be analyzed.

Even this small flaw can't deceive that the new logic is now completely
based on Scala preferences. The only exception of this is the
`ScalaAutoIndentStrategy`, which internally still reads the Java
preferences.
Add documentation about the inner workings of `DocumentCommand`
Simplify TestCommand in AutoEditStrategyTests
Make preference store in AutoEditStrategyTests execution ordering save

When the preference store is part of the companion object its state can
change between tests, thus it is moved into the abstract class.

The class TestCommand is moved to the abstract class as well, because
there is no advantage by having it in the companion object.
Make line ending check and insertion workable for Windows systems

On Windows a line ending is `\r\n` and not only `\n`.

This also fixes warnings about missing parenthesis at side-effecting
methods.
Fix bug in AutoIndentStrategy when the tab key is pressed in the first line
Merge pull request #651 from sschaef/t1001099-multi-line-string-indent

Enhance auto indent logic
Bump Scala 2.11 binary and module versions.
(cherry picked from commit 26f1fc2d6d8d11910fc3cb916406d164d9cae980)
Mechanism for creating custom semantic annotations

This mechanism is based on custom reconciliers (like implicit
highlighting), and provides easy way to extends Scala IDE with ability to
annotate your own method calls.

Fixes #1001989
Constructor calls are no longer highlighted
Warnings removed
Appending to Seq fixed
Small improvements in indentation

Correct indentation for:

* assignments of string and char literals (val x = "abc")
* `else` alignment in brace-less if-else expressions

I needed to improve the testing infrastructure a bit:

* set a document partitioner (the results of indentation
  depend on partitions, and some scenarios worked in the test
  suite, but failed in a real editor)
* correct the new caret position, and allow for tests where
  the expected result has only one occurrence of CARET

Fixed #1001306
Fixed #1000415
Use Scala formatter preferences for TABs in indenter instead of the Java ones.
Merge pull request #657 from dragos/issue/indent-string-assign

Small improvements in indentation
Add highlighting preference for Dynamic calls

The default colors for the new preferences are taken from already
existing highlighting classes. selectDynamic and updateDynamic are
highlighted as template vars, whereas applyDynamic and applyDynamicNamed
are highlighted as methods.

A new Dynamic category is introduced to the syntax coloring preference
page.
Remove needless information from preference page

It is already clear that the Scala preference page highlights Scala
symbols, no need to add this information again in the displayed name
of the ScalaSyntaxClass.