3.0 unloading

Implements #3083. I've added a few new methods to make Components and Helpers consistent with the Table class. I've also added `unload()` to the base class and made it generally useful.

I feel most of these changes can be backported to 2.x, and once we've settled on method names and arguments I'll open another pull request to backport these changes and mark the existing methods as deprecated. Perhaps as part of 2.6?