Still make an HTTP response after an exception

The previous behaviour was to just close the connection with no output.
This sends an HTTP 500 response with a generic message.

If there was an exception partway through a previous response, this
might put some garbage at the end of that, but this is a better
situation for the user than a silent failure, as they still have
something to report to the developer.

Exceptions are rethrown so that normal exception handling may continue.

Closes #174