Switch ColumnDefaultTest and ForeignKeyTest to RelationalProfile.

- Move assertTablesExist/assertNotTablesExist up to RelationalTestDB.
- Move O.DBType up to SqlProfile.
- Implement equality for ProductValue.
- Implement some new library functions in QueryInterpreter.
- Change the type encoding of most library functions, along with changes
  to OptionMapper. The previous translation scheme created operations of
  the base type and then option-lifted them (e.g. a: Column[Boolean] ===
  b: Column[Option[Boolean]] would become OptionApply(Apply[Boolean](…))).
  This is not a correct representation of ternary logic. Instead we now
  compute the option-mapped type and and use that directly as the result
  type of the operation (e.g. Apply[Option[Boolean]](…).