Allow custom class for RelationFetch deserialization.

This is useful for:
- Situations where caller expects all results to be same type
- When caller prefers working with Maps (eg the clojure client)
- Consistency with other fetch operations