Accept `base` config key in Plugin::load()

- Enable plugins to specify a different base path defining where its
  class files can be found. The value `base` is relative to `path`.
- New method Plugin::root(), returning the absolute root path of a plugin

Alternative to #3662:
- Does not force use of `src` as basepath
- Easier upgrade path for plugins
- Less core files are touched/modified, smaller diffstat:
  - `3 files changed, 97 insertions(+), 18 deletions(-))` __vs__
  - `165 files changed, 1383 insertions(+), 1357 deletions(-)`