Denormalize command references

This change allows commands to submit strings for references as opposed to an object's `name` key. In order to support backwards-compatibility, this introduces a `conform!` capability where both forms will be accepted by mutating data in the old format into the new format. This also introduces data integrity for elements in an array.