packageFileList now uses promises and load.json is not hardcoded

When instantiating a new packageFileList it will check to see if it was
passed a load.json location.  If it was, it will attempt to load
packages from that directory, if not it defaults to data/load.json.  It
will begin to load packages immediately, but the package list can't be
used until all of the packages are loaded.  A new method named
getLoadedPackages has been added that returns a promise that is
fulfilled when all of the packages have been loaded.