Use shutdown(2) on the socket when watcher is stale

ApplicationManager#with_child wants to be able to detect an error on the
socket so that we know that the application process is no longer
available. It seems that merely closing the socket here is not enough to
cause the error (I'm not exactly sure why), so use shutdown instead.

This problem was demonstrated by
https://github.com/rails/rails/issues/13381, where we have spring
running a rails generator, which then shells out and calls back into
spring a second time (mind blown). This would be fine except for the
fact that the generator changes the gemfile, which causes the
application process to want to start exiting, only it can't completely
exit because it's still running the generator. That's why we need to
shut down the socket so that the spring server knows to start up another
application process.