Add kind "KBool" to let us distinguish SMTLib types Bool and BitVec 1.

This avoids generation of non-type-correct SMTLib output for proofs like:
 prove $ \x -> (x::SWord1) `shiftL` 1 .== 2*x

Previously, this would generate SMTLib code with nonsense like this:
   (let ((s1 (bvshl s0 true)))
instead of
   (let ((s1 (bvshl s0 #b1)))