Allow use of `0` as initial value
… But still cast false, and null to ""
Simpler undefined check
resolve merge