reactive attribute tests and clean-up

in particular, fully support nested arrays in attribute values
and null and undefined attribute values (which indicate no attribute)