Clean up evaluator.

* Use `Either` for signalling non-linearity
* More algebraic-looking representation of complex linear combinations