Distinguish Bool from (Either () ())

Given that "if_" and "true" and "false" are now primitives rather than
macros, we need to distinguish Bool in their types from (Either () ()).
Otherwise we'd allow nonsensical Hakaru expressions such as
(uneither true ... ...)
Export Bool,True,False for roundtripping
Disintegrate has Lists
Fixed merge conflicts