Properly detect nonboolean protected expressions in beam_bool

Silly code such as the following could make the compiler crash:

```erlang
f() when erlang:float(self()); true -> ok.
```

@UlfNorell