Promise-based loader

This is a refactor that uses a promise-based method for loading
resources, adding the ability to specify multiple sources for a names
resource. When multiple sources are provided, these act as a fallback -
i.e. if one is unavailable, each subsequent source is attempted until
the list is exhausted. This further supports an optional "load test" in
the list of sources for an item, allowing the detection of a resource
that failed to load on older browsers that don't support useful
notifications of script failure.

Effectively, this version enhances the loader with fallback resource
locations. The return object to each call to "head.js" or "head.load" is
now a promise that represents the successful or failed loading of the
resource or resources, allowing more intricate and efficient chaining.