Fix source file caching in presentation compiler.

Removed the sourceFile map altogether. Caching is performed now at the
level of `InteractiveCompilationUnit`, who may keep the last SourceFile
instance. The default implementation does not cache anything, but
`ScalaCompilationUnit` does.

In the process, removed a number of `withSourceFile` methods on project
and presentation compiler classes. These may break plugins.

Fixed #1001859
Add equals/hashCode for ScalaProject.
Added back `withSourceFile` and marked them @deprecated.