Commands

#4 

Parameterizing signals by scheduler type has had some interesting consequences for commands – namely, everything is delivered on the main scheduler, except for background work created with `onExecute` (like `-addSignalBlock:` or `RegisterAsyncObservable`).

This might sound detrimental to performance, but commands are generally used on the main thread anyways, and this makes event delivery more deterministic.

**To do:**

 - [x] Fix value and error channels never completing.
 - [x] Support concurrent execution.

@joshaber @xpaulbettsx