Client code cleanup

Made lots of changes to make the client more idiomatic java:
* Use final members whenever possible.
* Prefer private members.

Still todo: 
* I think I'd like to see Client.java have all the methods from the various clients in it.  There isn't much point in making them separate.  Separate creates several problems: 1) it will be confusing once we start using more events, 2) requires multiple HTTP connections.  @Kami  what do you think?

EDIT: BTW, I think the way we use java events can be improved.