Resolver now has two methods to separate required from optional dependencies:

- get() throws
- optionally() returns undefined
- BaseResolver provides protected doResolve() to implement the resolving logic
- revised Resolver documentation