Allow resource interfaces to return the result type directly

Preceded by: #585 
Followed by: nothing (for now!)

With this change resources are allowed to return concrete classes, collections or maps representing their result type. The delegate introduced in #585 is required when using this syntax.

Upcoming PRs:
- Move some code to a shared package, thus allowing resource interfaces to be used by server implementations and injected by client code.
- Provide some testing tools to help reduce boilerplate when writing unit tests.
Why this particular action?