Cleaned server and added decompression to input

* Cleaned up the server by creating just one handler class which is used to create the other handlers by supplying a function to act on the json
* Fixed the client to send different Content-Type based on whether they are compressing or not
* Created a custom cherrypy json processor to first decompress json if sent compressed