Refactor resources implementation to be more flexible

This now supports specifying the url_names and url_reverse_names
properties on the class as a dict with keys `set`, `sets`, and `objects`.
This provides more flexibility with how URLs are constructed. Further,
the set_links_posthook is now a class method so it can be overridden or
extended if needed.

The get_url_patterns supports taking a `base` resource which will be used
to defined the other required resources. A prefix to the URL can be
supplied to specify the path.