Clean up on Stop()
Clean up on Stop()

Fixes #29.

I _think_ this bug was brought about by two problems:

  - The receive from lastOutputChan blocked forever.  I don't think we
    need this channel.  Just push lastOutput into the critical section.

  - Erasures on Stop() were not synchronous.  This could pose problems
    if the caller was also writing to the stream.

briandowns/spinner