Further work on RPC, update workflow tests

Ok, new submission of https://github.com/ensime/ensime-server/pull/690 (github wont let me reopen it).

As per previous comment.
Further work on the RPC protocol as a callable interface. Work was done so that Project has no references or dependencies on the protocol. Refactored the workflow test that use the RPC interface directly. This has made extending the test a lot easier and I've managed to increase the coverage to >70%

@edani I've made an update so we don't keep the history any more (sorry forgot to leave it as separate commit).  The key code is in SubscribeAsync in Project.scala (line 137).   Longer term I'm going to need to think  about this harder.