Filter key listeners using the correct key types.

One of those "== is not typesafe" bugs.
When joining SbtClient, don't put Null clients in the set

We were creating JoinedSbtClient(clients=Set(NullSbtClient, LiveClient))
kind of situations, the null client is pointless in this case.
Fixes/tests for primitive value serialization

 - our special-case for Boolean didn't work because it
   had to be lowercase
 - add special cases for the other primitives
 - Unit doesn't work elsewhere (no Format for it),
   not fixed in this patch
 - when we can't load a serialized class, return None
   which gets us a nice helpful error later, instead
   of throwing ClassNotFound which is just confusing
Merge pull request #110 from sbt/wip/havocp-assorted-fixes

Some fixes related to ValueChanged and its serialization