I'm curious about the choice to prefer why error over nil? It seems that behaving as close to `Hash` as possible would lead to the list confusion. I think the addition of predicate methods might muddle otherwise consistent behavior; if a key exists in the hash then presumably its value is truth-y by nature.