refact(Config): move load method into a `Config` class method

BREAKING CHANGE
refact(doc-processor): config must now be an instance of Config

BREAKING CHANGE
refact(doc-generator): only use Config methods for accessing properties
refact(Config): only use Config methods for accessing properties
feat(Config): allow a new config to have restricted access to a container config
refact(doc-processor): remove deprecated processor init methods
feat(dependency-sort): add new utility function

This function will sort a list of objects based on their name and one or
two properties that define 'before' and 'after' dependencies.
refact(doc-processor): pass processors, etc. as direct params rather than config

Previously the doc processor extracted the processors to run from the config
but this change moves the responsibility for providing the processors, and the
"services" (injectable objects) to the caller.

BREAKING CHANGE
feat(package): add new Package type

Objects of this type store information about a package, including its
name, processors, services and configFns.
refact(doc-generator): configure using new Package types

BREAKING CHANGE