Boot application using Process.spawn rather than fork

Forking is faster since we don't have to load all the code again, but if
the bundle changes we have no choice but to kill spring entirely. This
will make it possible to load new bundles in (while the spring server
still runs from the old bundle).
Gracefully handle Gemfile changes

Closes #216