Explicitly register class-based tasks inheriting from our own class
This lets go of the metaclass madness imported from Celery 3, and goes for an explicit task registration mechanism as advised in Celery 4.
We do explicit registration of all our tasks in the 'worker ready' signal, just before they automatically subscribe to the task queues.
Unfortunately that signal is not emitted by the "test fixture" worker, so we need to explicitly register class-based tasks that are being used in tests. This doesn't show up for functions as the @task decorator handles registration.
Test Plan
same tests as !25 (closed): tox, worker with custom config, plain worker with -I
Migrated from D853 (view on Phabricator)