Fix TypeToken for bool to match TypeNumber
TypeToken encoded the type bool as uint8_t, which broke type equivalence checking based on TypeNumber (which has a separate value for bool). I fixed the problem by specializing SquashedType so that it preserves bool and does not squash it into an integer type, though bool is integral.
This fix allowed to remove specialization of TypeNumberOf for bool because SquashedType, which is used in the general case, now preserves type bool.