CreateMethodProposal refactoring

To reuse behaviour in abstract members implementation feature
Abstract members implementation added

Current version limitations:
1) There is no stub generation for abstract val/vars
2) Type parameters for defs are not generated
3) The text overlaps with the icon in quick fix menu when there is one abstract method
4) Additional brace is added to the class while invoking abstract member implementation feature from class/trait with empty body:
class Test extends TestTrait {^
}
(but for: class Test extends TestTrait {^} result is correct)
5) Stub for abstract member is not generated while invoking abstract member implementation feature if the cursor is on `class`/`trait` keyword: cla^ss Test extends TestTrait
Remove useless conditions that check invalid input

In `CommentAutoIndentStrategy` the conditions that check if the input is
correct are useless because the docs don't state that invalid input can
be passed. While for Eclipse docs this doesn't mean anything all the
other auto edit strategies had never had any problems with invalid input.
Add auto breaking of comments functionality

With this feature multi-line and Scaladoc comments are automatically
broken after the print margin.

The feature can be enabled/disabled in `Scala -> Editor - Typing`.

Fixes #1002101
Add `override` keyword to some methods

I can't see these tickets any longer. Sadly I don't know of any linting
tools that could check the entire codebase for the missing `override`,
thus only the three reported classes are fixed and not more.

Fixes #1001938
Fixes #1001937
Fixes #1001936
Merge pull request #685 from sschaef/t-add-override

Add `override` keyword to some methods
Merge pull request #682 from sschaef/t1002101-auto-breaking-comments

T1002101 auto breaking comments
Stubs for abstract members - type params, val/var added
Stubs for abstract members - tests added
Merge pull request #672 from VladimirNik/abstract-members-implementation

Stubs for abstract members
Add helper for multi linked mode to EditorUtils.

Multi linked mode allows to edit one or more groups of linked fragments. The user may switch between groups with the tab key.
Add prerequisites for the new extraction refactorings

Add the mandatory classes and settings used by all extraction refactorings.
remove deprecated extraction refactorings

Removes the old implementations of ExtractMethod and ExtractLocal (replaced by the more generic ExtractValue) and their integrations in the quick assist menu.
integrate new extract value refactoring

A more powerful version of the deprecated Extract Local refactoring.

Extract Value creates a new val definition that includes the extracted
code and replaces the original expressions by a reference to the new
value.

This implementation of Extract Value offers the following features:
- Extraction of values into arbitrary target scopes in the same CU
- Inline renaming of the extracted value
- Supports the extraction of multiple value definitions
- Extraction of anonymous functions
integrate new extract method refactoring

A more powerful version of the existing Extract Method refactoring.

Extract Method creates a new method definition based on the selected
code and replaces it by the according method invocation.

This implementation of Extract Method offers the following features:
- Extraction of methods into arbitrary target scopes in the same CU
- Inline renaming of the extracted method and its parameters

Known limitations:
- Extraction of modifications to mutable variables are not yet supported
  def f = {
    var i = 0
    i += 1 // extraction of this line into scopes where i is not
reachable is not allowed
    println(i)
  }
integrate extract parameter refactoring

Extract Parameter adds a new parameter to a method based on an
arbitrary expression that evaluates to a value. The original expression
becomes the default value of the new parameter. Hence, the according
method calls are not modified by this refactoring.

- Allows to choose the method to add the parameter when invoked in
nested methods.
- Inline renaming of the extracted parameter

Knowns limitations:
- Does currently not support parameter extraction in methods with no
parameter list. Adding parameter lists would break compatibility with
the existing method signature and require to update all existing method
calls.
integrate extract extractor refactoring

Creates a new extractor object based on a selected pattern or a guarded
pattern.

- Extraction of extractors into arbitrary enclosing target scopes in
the same CU
- Inline renaming of the extracted extractor

Known limitations:
- Extraction of extractors into package scopes is not yet supported.
- Every binding in the pattern becomes a return value of unapply. Even
if it is not used on the patterns right hand side:
  Extraction of the following pattern (inclusive guard)
    case (x, y) if x == y => “pair with equal values”
  becomes
    case Extracted(x, y) => “pair with equal values”
add a uniform invocation method for all extraction refactorings

Adds the “Extract… Alt + Cmd + E” to the refactoring menu which
gives access to the following refactorings:

- Extract Value
- Extract Method
- Extract Parameter
- Extract Extractor

After invocation “Extract…” collects all applicable extractions based
on the currently selected code. In order to reduce the number of
proposed extractions, “Extract…” analyses the selected code for side
effects. If it assumes the code triggers side effects, it prefers
method extractions over value extractions if the according target scope
allows both.

Furthermore, this patch integrates the new extraction refactorings in the quick assist menu. The additional quick assist processor uses the identical implementation as the “Extract…” command.

Known limitations:
- Detection of side effects currently uses a relatively simple
heuristic that may lead to impracticable proposals
merge