Fix bug related to channel output thread and memory mapped blocks.

Check to see if any defined memory mapped blocks are actually active
before starting the channel output thread.  This prevents us from
running it just because there are any blocks defined.

This also optimizes the code to see if we need to start the thread
when a block is activated by first checking to see if the thread is
already running and then checking if we need to start it.

Fixes #70.