Streams 179

Added an executor to call stop() on a stream when a thread exits due to error.

I have issued a pull request so that local streams will now shutdown if a provider, processor, or writer tasks stops execution due to an unhandled throwable.  This should be a step forward in making streams more transparent and reliable on the local level.  The Throwable will appear in the logs and it will note which Runnable class threw the error.

This is intended to only be a temporary fix.  This will illuminate many streams operations that have bugs, and need better testing.  Please create tickets for all exceptions that are caused by bugs and issue pull requests (with appropriate tests and documentions) to fix them.

In the future we can relaunch threads that exit due to error, and reprocess the failed datum.  Until we implemented better datum tacking this is not possible, but it is on the road map.