forbid cast as bool

This is currently unsound since `bool` is represented as `i8`, but it
makes more sense to remove it even though it will be fixed by compiling
`bool` as `i1` and only storing as `i8`.

The current behaviour will be the same as `x & 1 != 0` even though
 `x != 0` is the obvious behaviour to expect.

Closes #7311