Pass the user's formatting options to the refactoring library codegen.

At the moment, only for Organize Imports, but more will be added in
the future.

Fixes #1001073
Refactoring: Created a ``PartAdapter``

* Created a ``PartAdapter`` (subclass of ``IPartListener``) that does "nothing".
   Basically, it's a null object. I named it ``PartAdapter`` because that's current
   practice in Java (and ``IPartListener`` is a Java interface, hence it makes
   sense to me to keep the Java naming convention here).

* Adapted ``ScalaPlugin`` and ``SemanticHighlightingPresenter`` to use the
   new adapter class.
Forward verbose messages from the presentation compiler.
Merge pull request #132 from dragos/forward-pc-verbose-messages

Forward verbose messages from the presentation compiler.
Defaulted build-all.sh script to do a mvn clean install (instead of only mvn install)
Refactoring: Moved logic for opening a source in ``ScalaSourceFile``

* Added three new methods ``forceReload``, ``reload`` and ``discard`` in
``ScalaSourceFile``, and moved the logic from ``ScalaPlugin`` to
``ScalaSourceFile ``. This was done also for testing purposes (next
commit), as I needed a way to exercise the opening of a source file
(without having to duplicate the logic).

* As a side remark, I wonder if there isn't an already existing method in
  ``ScalaSourceFile`` that we should override to run the logic that is in
``reload/discard``. I though ``open(IProgressMonitor)`` could be the right one,
but that method doesn't seem to be called when opening a source file in the
editor.
Created test for Presentation Compiler bug

* This is actually an issue in the presentation compiler: https://issues.scala-lang.org/browse/SI-5975

Re #1000976
Merge pull request #130 from dotta/issue/ghost-error-1000976

Created tests for ticket #1000976 (ghost errors in the editor)
Don't allow ``ScalaPlugin`` this instance to escape during construction

* This is a classic way to create potential data races, so better to avoid it altogether.
Style update: use upper camel case for constant in ScalaPlugin
Merge pull request #133 from dotta/feature/code-cleanup

Don't let ``ScalaPlugin`` this instance to escape during construction
Extending the refactoring support by integrating new refactorings from the refactoring library.

The new integrated refactorings are:

- Method signature refactorings:
  - Change parameter order (within parameter lists)
  - Split parameter lists
  - Merge parameter lists

- Extract trait
  Extracts class members (val/var/def) to a new trait

- Move constructor to companion object
  Redirects calls constructor calls to a newly generated apply-method of the companion object.
  If necessary, the companion object is generated as well.

- Source generators:
  - Generate hashCode and equals
  - Introduce ProductN trait
    Generates methods to implement ProductN for selected class parameters.
    This includes generation of hashCode and equals.
Added indexHints method to IndexedRefactoring to provide subclasses a hook to speed up index building.
Applied pull request suggestions by Mirco, fixed some index problems.
Moved source generators to Source menu, properly handle refactoring preparation errors.

Generate hashCode and equals and Introduce ProductN trait now show up in the Source context menu. This is done programmatically in ScalaSourceFileEditor#editorContextMenuAboutToShow, so they are removed from plugin.xml.

When a refactoring fails in the preparation step this is now properly handled, the error message is presented in a dialog.
improved source generators

when generating hashCode and equals (and canEqual) implemenations and the class has already implementations for some of these methods, the user now can choose either to keep or replace his implementations.
improved message for existing equality methods in source generators
implemented mirco's style improvement suggestions for hashcode and equals generation dialog
Merge pull request #111 from michih57/issue/extend-refactoring-support-1000960

Extending the refactoring support by integrating new refactorings from t...
Warn the user if JDT Weaving is OFF

At startup, check that JDT Weaving is enabled. If it's not, then
warn the user through a dialog box and programmatically
enable JDT Weaving (and restart the workbench) upon confirmation.

Note that there is no way for the user to silent the dialog. Each time the
Scala IDE plugin is activated the check will be performed, and if JDT
Weaving is OFF the above mentioned message will be displayed. If the
user doesn't want to see the dialog, it will have three options:

* Enable JDT Weaving
* Disable the Scala IDE core bundle (using the OSGi console)
* Uninstall the Scala IDE plugin

Fix #1001113