Cover all of swank code (incoming)

This change is designed to code cover and tighten/simplify the swank protocol. 
There should be no api changes from this change, although the protocol has become less forgiving, for example the previous implementation allowed arbitrary arguments after the matched list (which were ignored), now if the protocol expects three params, it will error if there are 4.

There is no way to test this as it is basically the contract between emacs and ensime.  So please give it a boot around.