Add pallet.spec tests
Add sync, sync*, deref-rex to pallet.utils.async

sync and sync* can be used to get a synchronous value out of an
asynchronous function.

Removes defasync from pallet.compute.
Add a list-phase test
Remove synchronous version of lift-op
Fix exception cases in lift-phase
Add lift-op test
Dispatch plan executor through multi-method

Also drops the outer map and :result key from the returned action
result.
Add plan executor implementation for fail action
Test execute-action with fail action
Test execute with fail action
Make script error behaviour configurable

The :error-on-non-zero-exit action option can be used to control
whether a non-zero script exit is an error or not.  Defaults to true.
Replace node-targets, node->target with target-with-specs
Clean up requires in pallet.spec