Support property deletion

Changes to support property deletion in the API (e.g. deleting description on customer)

* Setting attributes to null passes an empty string to the API, leading to legal properties being deleted
* Setting an attribute to an empty string is an error to avoid accidental unsets