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.
Merge pull request #77 from m4burns/m4burns-fixes

Hopefully fix an 'Internal Server Error' bug.