better documentation for DDS.add
variable: Renderer to view
more bulletproof uid function

- because of the underscore, then if the uid is used as a key in an
object, the properties are guaranteed to be sorted in the order that
they were set instead of numerically. Previously, if the random
characters had happened to all be digits, that prop would be sorted
numerically
- because it's longer ("uid_uid") it's less likely (completely
improbable) to have a collision