Contextualize ValueResolvers and ContextResolvers, improve response handlers
Contextualization:
- ContextResolvers and ValueResolvers now accept a single parameter, ContextResolverContext and ValueResolverContext respectively.
- Both contexts extend from ParameterResolverContext, which exposes the CommandActor, CommandParameter, as well as other useful elements
- Contexts provide the ability to refer to the arguments that have already been resolved.
- Contexts should make it easier to introduce additions to resolvers without breaking old code
- This update is not backwards-compatible!
- Automatically infer responses of type java.util.function.Supplier
- Fix response types not allowing nesting, for example a
CompletableFuture<Optional<String>>
. - Add ArgumentStack#asImmutableCopy() for gaining independent copies.