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 ... ...)