3.0 bake auto-discover

Implements the features described in #3219. This allows bake to auto-discover app/plugin tasks that extend `BakeTask`. This process should work for plugins that use non-conventional directory layouts, as `Plugin::pluginPath()` should manage the path tricks. This includes changes from #3254 which can be split out if required.