all `Boolean` methods should return `true` or `false` (not `nil`)

RE #60, update all the tests to explicitly check for `be(false)` or `be(true)` (instead of falsey and truthy). 
Use `Hash#key?` instead of `Hash#[]` to check for the existence of a key.

This avoids logic bombs when the return values are used in certain contexts:
```ruby

irb(main):001:0> case nil
irb(main):002:1> when true
irb(main):003:1> puts 'true'
irb(main):004:1> when false
irb(main):005:1> puts 'false'
irb(main):006:1> end
=> nil

irb(main):007:0> nil.to_s ? true:false
=> true
```
I think we only need to negate the `which` statement. The other two calls should always return a boolean.