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)