Make auto-npm install's when package.json changes

Using empty target trick (see comment)
Make creates build/ if not there, rm from git

Same empty target trick as parent commit
README now says just need to install Node and make
Fix #217 no Array::indexOf in IE<9, use RegExp::test

http://kangax.github.io/es5-compat-table/#Array.prototype.indexOf

Thanks @eoghanmcilwaine
Reorg test_server to use then define callback fn #cosmetic
Swap order of requires vs reading env variables #cosmetic

Puts env variables closer to where they're used
`make server` auto-rebuilds without restarting server

Before, the `test` make target was a dependency of running the server
and node-supervisor killed and re-ran `make run-server` whenever any
source files changed, so the server would be down while `make test` ran
and you had to keep Refreshing until `make test` finished and the server
came back up.

Now, we still re-run `make test` whenever source (or test) files change,
but the server never goes down, it just puts all incoming HTTP requests
on hold until `make test` finishes.

This way, as soon as you write a change to disk you can switch to Chrome
and Refresh just once, and it'll take as long as it takes `make test` to
complete for the page to load, rather than the connection being refused
because the server isn't running so making you keep Refreshing until the
server comes back up.

node-supervisor apparently defaults to fs.watchFile rather than
fs.watch[1], but the fs.watchFile docs[2] specifically recommend
fs.watch[3] instead. As a bonus, node-supervisor apparently only watches
individual files, the list of which is determined when launched[4], so
if new source files were added then `make server` would have to be
killed and re-run, whereas we now watch the entire src/ and test/
directories.

[1]: https://github.com/isaacs/node-supervisor/blob/v0.5.6/lib/supervisor.js#L285-L288
[2]: http://nodejs.org/docs/v0.10.22/api/fs.html#fs_fs_watchfile_filename_options_listener
[3]: http://nodejs.org/docs/v0.10.22/api/fs.html#fs_fs_watch_filename_options_listener
[4]: https://github.com/isaacs/node-supervisor/blob/v0.5.6/lib/supervisor.js#L144

Also, one less dependency!
Factor out enqueueOrDo in test_server.js #cosmetic

Principle: One-letter variables like `q` only allowed in very localized
scopes where a longer descriptive name would get in the way; variables
used in widely separated places must have long descriptive names
(especially and for example, function names)

Bonus: Reduce duplication of how to serve request
Rename callbacks in test_server.js #cosmetic

Rename callbacks to have imperative names instead of the redundant
"on$EventName" names
Reorganize code in test_server.js #cosmetic

Move immediately-executed code together into 'main' section; also,
sectionize the code.
Inline readFile in test_server.js #cosmetic

Only wanted it as a separate function because didn't have enqueueOrDo
Makefile just uses -p to safely create build/

mkdir -p is in POSIX:
https://github.com/mathquill/mathquill/commit/5378645d955be2bbdb1136db409b2ca0844fb486#makefile-P29
Merge pull request #212 from mathquill/build.empty-targets

Use empty target trick in Makefile
Merge branch 'master' into build.blocking-server

Conflicts:
	Makefile
	- #212 on master added $(NODE_MODULES_INSTALLED) as a dependency
	  of `make server` because it used node-supervisor
	- build.blocking-server removes node-supervisor as a dependency!
	  WOOO!
Merge pull request #222 from mathquill/build.blocking-server

`make server` auto-rebuilds without restarting server
Merge remote-tracking branch 'upstream/master' into develop