Services

This is an attempt to make custom AsyncMultiService usable inside an advanced master.cfg or a buildbot plugin.

You can start review by looking at the doc in the end of the patch. I hope this explains the idea.

The hierarchy would rather be:

  Service
  ReconfigurableService(Service)
  MultiService(Service)
  AsyncService(Service)
  AsyncMultiService(AsyncService, MultiService)
  BuildbotService(AsyncMultiService, ReconfigurableService)

I don't see why we should go with a mixin for the ReconfigurableServiceMixin. This would make sense if the reconfigurability is a feature meant to be used elsewhere, not just services, and in this case, the mixin would better be named ReconfigurableMixin.

After all, you may want to create basic reconfigurable services, so ReconfigurableService as a class makes sense.