WIP - Move Resource functionality to its own package

Create a unified Builder object for working with files, selectors,
types, and items that makes it easier to get multi-object functionality.

Make util.ErrorList public so that tests can access individual errors
(otherwise they have to implement an error slice themselves)

Makes #3004 more powerful and cleaner