API: Support string descriptors for unique indexes

- Documents the format for descriptor arrays
- Implements the behaviour that developers have come to expect for
  string descriptors of indexes
- Resolves #2403

Versioned needs to convert unique indexes to non-unique for its suffixed tables, such as Foo_Live and Foo_versions. Because DataObject accepts string descriptors such as array('UniqIDX' => 'unique (Uniq)') as well as array-based descriptors, Versioned needs to recognize string descriptors. This patch accomplishes that. Before, Versioned would fail to convert string-described indexes to non-unique, resulting in run-time errors when creating a new version of an object.