added ListUtil
descriptor now has a reasonable toString
resolver now logs descriptor mappings
introspector now uses ReferencedBy to constrain subresource matches

This allows the same abstract type to be returned from many different
resource locator methods, but to still resolve unique paths for
particular models.