Implement entry level close.

Implement a entry level close of an open Staccato stream, a close that
is scheduled to happen per entry.

Closes #8.
Eliminate re-open race.

When a stream is closed by a cache purge it needs to preform an
asynchronous close. While waiting for that close another execution path
could request a stream for the same file through the `Journal.open`
method. When this happens the opening path should wait for the closing
path to complete. We accomplish this by placing a callback in the
cartridge. The callback is placed by the opening path and invoked by the
closing path when the close is complete.

Closes #9.
Closes #8.