This commit fixes some issues with falsy attributes not being properly set/removed in various situations. Also, the behaviour was not consistent between normal attribute (key/value) and generic attributes (pair or object)