I accidentally rewrote the whole server

rate limits clients and async's api keys

converts checkApiKey method into async code
converts generateApiKey method into async code

creates ApiKeyHandler

new api key format

{
  client: socket.io session id
  apiKey: client's assigned api key
  time: hrtime of when api key requested
}

moves server tests to `server-tests.js`

reorders require statements

adds '_' to jshintrc
adds 'web.js' to jshint
fixes jshint errors

will take a pass at it later

references https://github.com/ridhoq/pro-grid/issues/55

MMMMMMMMMMMMEGGGGGAAAA COMMMIITTTTT