Treat projects in subfolders correctly in `NewFileWizard`

Normally a project is located in the root of the workspace, which would
lead to a physical location like '/workspace/project/file'. But it is
totally valid to have a file in a physical location like
'/worskpace/subfolder/project/file'. It is even possible to have source
folders that are linked resources and can therefore be located anywhere
on the file system. In these cases the wizard did not work correctly.

Internally the wizard was based on `IPath` types which was a problem
because they couldn't handle linked resources perfectly well. In case a
linked source folder points to another folder in the workspace, an
`IPath` object did always point to the real file on the file system. If
the path would have pointed to the symlink there would have been no way
to determine its real location.

To overcome this limitation the `IPath` references were replaced by
`IFile`, which abstracts over workspace files and therefore can
correctly recognize symlinks.

Fixes #1002185
Select project explorer element after wizard created new file

Fixes #1002188
Apply reviewer comments

- NewFileWizard.pathOfCreatedFile is renamed to
  NewFileWizard.createdFile
- FileCreator.createFilePath is renamed to FileCreator.create
- FileUitls.createFile uses IResource API instead of Java file API
Merge pull request #748 from sschaef/t1002185-subfolder-support-for-wizards

Treat projects in subfolders correctly in `NewFileWizard`
Don’t lose warnings when building incrementally.

The builder clears all problem markers in a  given project, but not
all warnings will be reported in an incremental compiler run. For example,
the change might not require recompilation of a file that contains deprecation
warnings. In this case we’ll add markers based on the Analysis object supplied by Sbt.


See https://github.com/sbt/sbt/issues/1372

Fixed #1002148
Cleaned up EclipseSbtBuildManager.

* removed the indirection from SbtReporter to BuildReporter, which was a
  leftover from the refined build manager. No need to route through a compiler-based
  reporter anymore (and mapping back and forth between positions and severities)
* reorganized the file to start with fields and public methods
* moved all file operations to use IFile instead of compiler-based AbstractFile
Remove the build manager choice, since the refined build manager is long gone.
Additional test for builder, making sure we leave no stray error markers after undo.
Reinstate length for build error markers.

The Scala compiler uses offset positions, so errors are reported at
the starting position. We derive a length based on the identifier
at the given position, so that error markers have a non-zero length,
and look better in the UI.
Report remaining work based on the current and total work units.

The previous code was the original one, with no justification for
using `lastTotal` instead of the actual current work unit. Changed to
what seems more logical.
Keep track of what files have been compiled

The previous heuristic that a file with error markers means it was compiled
didn’t work very well. We could have a file that has no error markers but
it *was* compiled, in which case we’d add outdated error or warning markers.
Merge pull request #754 from dragos/issue/deprecation-warnings

Sbt builder fix and refactor
Add `ScalaDocumentProvider`

This class is necessary to overwrite the existing behavior of Java save
actions. Because the Java code is not extensible it is copied to the
Scala to `ScalaDocumentProvider` in order to call Scala save actions.
Start implementing API for Scala IDE extensions

This introduces several new traits in the new package

    org.scalaide.core.text

The main design goal of this text API is to provide a safe environment
users can work on. The entire API can't change the underlying documents,
it can only produce change objects that need to be passed to the IDE,
which can decide what to do with the changes.
Add save action support

This adds support to execute save actions in the
`ScalaDocumentProvider`.
Add remove trailing whitespace save action
Add new methods to Document API

Common methods are added: apply, head, tail, init, last (+ safe variants
that return an Option)
Add save action that adds new line at end of file
Add compiler support for save actions

It is now possible to choose if a save action should operate only on
a low level text API or on the entire API of the compiler.
Add save action setting functionality

This is an API extension that allows save action authors to show
information about the save action to users.