refactor to make structure more clear

- update readme with a more clear explanation of whats
  going on in general, add missing links
- websocket methods are now on the server rather than the
  app object
- server now emits open, message, and close events for
  giving info about client socket connection states
- server now correctly manages the # of  connected sockets
- client example updated to work with new api and to show
  the open and close events on the server