Register an item and return it.
Case-insensitive item key. If not given, fallsback to item.prototype.$$CLASS_NAME or item.prototype.name or item.name.
item.prototype.$$CLASS_NAME
item.prototype.name
item.name
If unregistered or omitted, nothing is added and method returns undefined.
undefined
Newly registered item or undefined if unregistered.
Adds an item to the registry using the provided name (or the class name), converted to all lower case.
Register an item and return it.