3.0 task collection & refactoring

I've replaced/updated `TaskCollection` to the newer style of registry. This set of changes also renames the classes, and removes the duplication using a base class and template method for registry classes. I figured that `Registry` is a better name than `Collection` as the objects no longer contain features for manipulating a collection of objects. Factory felt incorrect as well, because instances are retained.

I've added a new upgrade shell task to do the class renames, but I haven't made it able to go through and change `_Collection` to `_registry` in component subclasses. Is this something that would be useful?