Adjust encoding of BOOL and char values

Because `@encode(BOOL)` is the same as `@encode(char)`, the code was applying `BOOL` logic to char values. I’ve moved the `BOOL` logic to the end of the if statements. As it turns out, it will probably never reach that line because the `char` logic will take care of it fine. But it seemed like good defensive programming to keep the `BOOL` logic in there, nonetheless, in case Objective-C ever introduces a different `objCType` encoding for `BOOL`.

I also added a unit test for `BOOL` and `char` values.