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