Reviewer's comments

Linting:
- Try.toOption rather than match x2
- reverting the switch of sourceOutputFolders to a Map[IContainer, IContainer]
- split ScalaInstallation, ScalaInstallationChoice, ScalaModule in their own File

Comments:
- typo in scalaVersion
- Documented classpathHasChanged's parameter
- 2.10 mention in TextHoverFactory

Removals:
- scalaLibraryFile removal
- ScalaProject's jdkPaths removal

Renamings
- ScalaProjectMessage -> ScalaProjectEvent
- scalaLib -> scalaLibrary
- allJars() -> allJars
- directDependencies() -> directDependencies
- exportedDependencies() -> exportedDependencies
- transitiveDependencies() -> transitiveDependencies
- sourceFolders() -> sourceFolders
- outputFolders() -> outputFolders
- outputFolderLocations() -> outputFolderLocations
- storage() -> storage
- hasScalaNature() -> hasScalaNature
- isClasspathValid -> isClasspathValid()
- storage() -> storage
- prepareBuild() -> prepareBuild
- isUsingCompatibilityMode -> isUsingCompatibilityMode()
- getHashString() -> hashString
- getDesiredSourceLevel() -> desiredSourceLevel()
- getDesiredInstallationChoice() -> desiredInstallationChoice()
- getDesiredInstallation() -> effectiveScalaInstallation()