Second attempt at SExp refactor/simplification.


This is the same as https://github.com/ensime/ensime-server/pull/544  (new PR as pervious was merged/reverted.

but with the fixes applied to SwankProtocol

@edani - Care to take a gander?