Default dimensions to null, not empty objects

Empty objects are truthy and elsewhere in the code we only
check for truthiness before trying to access properties.

Resolve duplicate methods for clear/unset dimesnions.

Fix logic for detecting dimension change in setters.

Change-Id: I922f538765c82766aaabfad62eef61bc4ac5acb3