Refactor sockets for separation of concerns and scaling

Having one `base.js` file for all socket endpoints doesn't make sense. This PR splits the overlay listeners and the pardon the smash listeners into two files, and loads those files in `index.js`.

To add a new socket.io endpoint, you'll create a new file in the `sockets` folder and add that file to `sockets/index.js`. Make sure your file is namespaced using `io.of('namespace')`.

It also makes the overlays pull old data on connect more reliably, which should fix #17 at least 95% of the time.