Better optimization of Option operations:

- Expand and retype untyped LiteralNode.nullOption values already in
  expandSums instead of expandConditionals.

- Introduce a new OptionSwitch node type instead of using IfThenElse
  directly for expanded non-primitive OptionFolds. Introduce a new
  OptionBuild node type instead of using ProductNode directly for
  expanded non-primitive OptionApplys.

- The new node types are used for additional fusion optimization in
  expandSums and then translated to IfThenElse & ProductNode in
  expandConditionals.

- Perform expandConditionals directly after expandSums. There is no need
  anymore to first run expandRecords.