Automatically select problem position on quick assist invocation

This feature is supported by JDT quick assists, but got lost after we
got our own implementation for quick assist.

Fixes #1002305
Handle src/bin folders that are the same as project root folders

It is possible to create source and binary folders that are the same as
the project root folder. The easiest way to do this is to use the "Use
project folder as root folder for sources and class files" option in the
new Scala project wizard.

Scala IDE is unable so far to handle these folders because the Eclipse
API itself seems to be unable to handle these folders. The common
operation to retrieve an IFolder is

project.getFolder(path)

which throws an exception in case `path` is the same as the path of
`project`.

The problem is fixed by not calling `getFolder` inside of `ScalaProject`
but by reusing an existing reference to the `IContainer` that already
references the correct location on the filesystem.

Fixes #1002146
scaliform default preferences changed

scaliform.DoubleIndentClassDeclaration preference changed from "false" to "true" according to Scala Style Guide.
https://github.com/mdr/scalariform#doubleindentclassdeclaration

Fixes #1002321
Faster project loading in classpath computation

Loading projects is recursive and in case where:

A -> (depends on) B, A -> C, B -> D, C -> D

D is loaded twice.

In some big projects this causes a lot of wasted time when projects are
loaded dozens of times.

This commit introduces cache for already computed projects thet prevents
multiple loading of single projects.
Simplify HashSet usage for computed Classpaths

Since the LinkedHashSet prevents duplicates, processing classpaths in
topological order produces the same output, but would make the code more
complicated.

Fixes #1002311
Merge pull request #858 from sschaef/t1002146-handle-root-source-folders

Handle src/bin folders that are the same as project root folders
Merge pull request #860 from caiiiycuk/scala-ide-style-1002321

scaliform default preferences changed
Treat files as external dependencies.

Fixes #1002344
Wraps the Java spelling API call

As it will return 'null', if there are no spelling mistake to fix.
Avoid logging twice the same stack trace

SafeRunner already log the stack trace. Tweaked the error message to point
to this stack trace.
Merge pull request #863 from skyluc/issue/class-cast-exception-2317

Quick fix exceptions
Adds back Scala notation in the outline labels

Partial revert of 21f15b9aa570ec6730b8fdd9176f2f616a5534f8

Fixes #1002339
Add cycle avoidance to classpath computation.

Fixes #1002179.
Merge pull request #866 from skyluc/issue/java-style-in-outline-2339

Adds back Scala notation in the outline labels
Merge pull request #853 from sschaef/t1002305-quick-assist-considers-problem-location

Automatically select problem position on quick assist invocation
Revert "replaces CheckBoxSettingWithDefault with a by-name parameter and additional constructor"

This reverts commit f6639c8a10bf388ee26556fc3fb810234b93b237.
Merge pull request #862 from uunicorn/t1002344-ext-bin-deps

Treat files as external dependencies.
Revert "Treat files as external dependencies."
Merge pull request #869 from scala-ide/revert-862-t1002344-ext-bin-deps

Revert "Treat files as external dependencies."
code completion: reduce relevance for non class fields and for java.*, scala.* packages

* Added CompletionOrderTests in CompletionTestSuite for testing completion proposals order
* Added two test related to #1002343
* Fixed relevance algorithm

With this changes order should be:
* Locals
* Fields
* Orders from old algorithm, but symbols from java package take -15 penalty and from scala package take -10 penalty

I decide to penalize java and scala package because it`s symbols (also fields and methods) are less `local` then symbols
from client code.

Fixes #1002343