First pass at an implementation of Commands
Factor out logic for setting a new 'executing' value
Add doError
Add finally
Added map (flipped fmap)
Refactor commands to use the main MainScheduler, add onExecute
Merge branch 'master' into commands

Conflicts:
	Tests.hs
Add Scheduler.Unsafe with Show (SchedulerIO s v)
Support concurrent execution
Test that executing gets set back to False
Terminate with an error instead

Apparently the transactional invariant violation fixed itself (or has a
race condition).
Move all MainScheduler stuff into Scheduler.Main
Combine channel implementations, and terminate on error/completed
Return () from all test functions
Dispose of new subscribers to a disposed channel
Automatically complete commands when finalized
Merge pull request #12 from jspahrsummers/commands

Commands