Cleanup if and unbound helper

- Removes private `unboundIf` and `boundIf` helpers in favor of a different implementation.
- Unifies `if` and `unless` code paths.
- Removes `data.isUnbound` in favor of pre-mapping params and hash by `read`