adds async.js as dependency

cleans up logging a bit
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
fixed minor disconnect bug
fixed some super nooby errors with removal of api key
updated contributing.md docs
adds code climate badge
basically rewrite the server again.

I am such a noob. Arrays worked for simple stuff.

What I learned:
 - I don't want to use cookies.
 - I don't want to use redis or mongo or anything. Heroku is a complete
   scam when it comes to pricing for realtime apps.
 - I don't care if people
 - I don't care about implementing a load balancing server in the
   future.

 References https://github.com/ridhoq/pro-grid/pull/56

 adds node-uuid as a dependency

 removes server side throttling for now
removes accidental package.json changes
jshint code && memory profiling
removes underscore as dependency
adds server tests draft
enforces throttling and timeout between requests

THEEE perfect rate limiting code

http://en.wikipedia.org/wiki/Token_bucket

adds disconnect message

removes memory leak test code
users ng-mousedown instead of ng-click for maximum responsiveness

pending alan approval
adds disconnect message
fixes throttle function on client side