S-Express: S-Exp serialisation framework

I hereby extend [Greenspun's 10th rule](http://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule) to Scala.

*Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.*

I went a wee bit overboard. This patch includes a shapeless-powered S-Expression serialisation framework based heavily on [spray-json](https://github.com/spray/spray-json) (but with lots of generics to reduce boilerplate). @sirthias may be interested to look at this and discuss further offline - I have some more to say about the shapeless work, see my PR over at https://github.com/milessabin/shapeless/pull/262

I have only moved over our config file parser to use this, but in tandem with #681 this will make changes to the protocol **a hell of a lot easier**. Also, when backported to 2.10, we can depend on `ensime-server` from `ensime-sbt` to share a common domain model for the configuration.

Also, some updates to random third party libraries.
This may surprise users. A `plist` is allowed to have duplicate keys (a common idiom is to prepend things to an existing plist, to override values). If the caller needs roundtrip invariance, it can treat the list as a SexpList.