Hopefully fix an 'Internal Server Error' bug.

Here's what I think is happening:

This exception handler is called when the credentials file does not
exist, since `call-with-output-file` with flag `#:exists 'update` raises
`exn:fail:filesystem?` when its argument path does not exist.

Calling `file-or-directory-permissions` subsequently in the exception
handler raises `exn:fail:filesystem?` again since its argument does not
exist.

This time, the exception propagates out of the `set!` block up to the
level of the enclosing `dynamic-wind`. The exception causes control to
leave the value-thunk, so the post-thunk of the wind is called. Then we
see the Seashell shutdown message in the log followed by an exception
raised by the `delete-file` called at the end of the post-thunk on the
non-existent credentials file.

The exception raised by the `delete-file` quashes the exception that was
in the process of propagating out of the value-thunk since return from
the value-thunk is at the tail of the post-thunk's continuation.

---

This patch makes this exception handler not raise another exception when
the file does not exist. It also fixes several TOCTTOU bugs.

NOTE: I have not tested this. I do not have a working deploy of Seashell on which to develop. Currently, all patches I submit are written without even running the racket interpreter on my modifications. The deductions above are based entirely on reading code and documentation.