Remove OptionSwitch and OptionBuild.

- In order to optimize translated Option operations correctly, we now
  use a special type OptionDisc for the discriminator columns.

- Introduce the concept of erased types for OptionDisc. Since such
  types are irrelevant in codeGen and at the client side, we use
  values of the underlying type Int directly without wrapping. The
  OptionDisc trait is only used as a phantom type. The corresponding
  Slick type is an ErasedScalaBaseType.

- Simplify LiteralNode and provide useful implementations of `equals`
  and `hashCode`.