Support chord virtual features end-to-end

This is the end...

This is built on part 4. We can close the PR if people prefer, or wait until that is merged before reviewing this. Whatever people prefer.

As discussed with Mark IRL there is an optimisation to bypass the squash when there are no virtual features, but for now we'll opt for less code paths at the cost of an extra MR.

The ChordSpec is flakey, I'm just tracking one case down now, but the fix will be in the arbitraries.
> Anyway to split and compose instead of the callback?

Yeah I don't like it either. It's only about managing the (temporary) output of the squash. I really didn't like the manual deletion required by the caller either. I'd be OK with a cleanup of a `/tmp/UUID` at the end of each command which makes this nicer. Or perhaps I need to look into scalaz regions?