Convert WorkflowOp to Fixplate.

Partial fix for #35.

The main practical benefit at the moment is that it allows us to unify
Workflows and Pipelines.

There is a bunch of renaming:

* WorkflowOp                           → WorkflowF
* Term[WorkflowOp]                     → Workflow
* Term[WorkflowOp] => Term[WorkflowOp] → WorkflowOp
* WorkflowOp.workflow                  → Workflow.task
* someOp                               → $some

Also,

* `Workflow` case class constructors are now non-private, for the `Traverse`
  impl as well as for `deleteUnusedFields` and `rewrite` (which currently needs
  to return the same type that was given to it, not a Term) and
* IdHandling is a bit more strict (but makes one property test hard
  to implement correctly, so it’s marked pending).
I don’t think it’s _possible_ for this to be more specific. The type expands to `Term[WorkflowF] => Term[WorkflowF]` – if you tried to use `Term[WorkflowF] => Term[SingleSourceF]`, it wouldn’t compile, as each individual op in the chain (not just the last) would need to be a `SingleSourceF`, so you couldn’t have a `$foldLeft` in there anywhere.

And now I’m thinking the type wasn’t even correct before – you couldn’t do `chain($read, $foldLeft(_, moreOps))` with the old `SingleSourceOp` type, could you? That would result in something that wasn’t a `SingleSourceOp`. I think it was just coincidence that we didn’t have anything that broke that assumption.