perf(cluster): user NodeJS cluster module to use all CPU cores

This makes the server.js file fork workers for the number of CPUs on the
system. Each worker will then bind to the MongoDB and Express
ports. They are really all using the same connection through the master
process, but this lets the logic happen in seperate threads. I do worry
that we may see more VersionErrors if one user makes more concurrent
API requests. That really isn't the fault of cluster though, as that
issue still would have been present in the previous single-core version.
Merge pull request #2447 from colegleason/cluster

perf(cluster): user NodeJS cluster module to use all CPU cores
fix(profile): fix bug where empty profile displayed on username click

Due to #2396, Shared was undefined in one controller. There may be other
cases we should look out for.

Fixes #2465
fix(tests): don't use cluster in tests, else we get "connection refused"
fix(spells): <ESC> to cancel spell-casting
Add Travis build status to readme
First root controller test
Using newUser helper in tests
chore(errors): send req.body before JSON.parsing @colegleason
Update index.jade
Update profile.jade
Update settings.jade
Update index.jade
Update profile.jade
Update settings.jade
Update profile.jade
Update profile.jade
Update profile.jade
Update profile.jade
Update settings.jade