Initial stab at a cleaner interface for Scala presentation compiler.

This probably needs a bit more polishing, but I put it out there so people get an idea of where we're heading.

* am `IScalaPresentationCompiler` interface with a smaller surface than `ScalaPresentationCompiler`
* convenience methods for `ask` calls. All calls in the interface create their own `Response` and return it
* simpler naming and cleaned up parameter

Stuff to do
- [ ] cleanup code using `ask*` across the board to use the simpler overloads
- [ ] move existing code from package `compiler` to `internal.compiler`, and keep `core.compiler` only for API code.
- [ ] Rename `api.ScalaProject` to `IScalaProject` and remove package `api`. It turns out it's too confusing to have several files with the same name when working on both of them. I find this enough of a productivity killer to distinguish in the names whether it's API or not. Same goes for clients, I'm sure it's better to know if you're dealing with "approved" API immediately.
- [ ] See if methods in `ScalaJavaMapper` can be rewritten, simplified, removed, etc. They look really bad.
- [ ] rename `locate` to something more explicit, like `findDecaration` or the like

Some of these are easy to do, I just didn't have time to work on them, and I wanted to give an early preview to everyone before I leave for 10 days. :)