Refactor adding work to a method.
Add IExecutableWork interface and related classes.

The new interface adopts Execute() and State previously owned by
ITriggeredWork. IExecutableWork is implemented by the previous
TriggeredWork classes.
Add work observables helper subclasses.
Rename file names from plural to singular form.
Remove IDisposable from ImmediateWorkRunner
Simplify executable work related code.

Changes to simplify how the works move through different states and how
errors (exceptions) propagate to work subscribers. Unregister renamed to
Complete. WorkRegistry doesn't use BlockingCollection anymore and is not
IDisposable.
Add Exception to IExecutableWork.
Rename IExecutableWork.Exception to IExecutableWork.Error.
Ignore worker errors in Output observable.
Remove piping of action works/workers.

Clients should simply reuse the trigger.
Change test exception type.
Add WorkerError behavior options.
Add test to verify work state during error.
Merge pull request #5 from hiscodeness/executed_work

Separate IExecutableWork interface from ITriggeredWork and related work execution improvements.