lib/HalDependencyResolver.js
function(filename) {
		if (!fs.existsSync(filename)) {
			return false;
		}

		if (!this._moduleStorage) {
			this._moduleStorage = [];
		}

		var that = this;
		var parser = new HalModuleParser();
		return parser.parseFile(filename)
			.then(
			function(fileInfo) {
				fileInfo.describe = that._binaryToDescribe(fileInfo.prefixInfo);

				that._moduleStorage.push(fileInfo);
			},
			function(err) {
				console.error('assimilateModule err: ', err);
			});
	}
function(filename) {
		if (!fs.existsSync(filename)) {
			return false;
		}

		if (!this._moduleStorage) {
			this._moduleStorage = [];
		}

		var that = this;
		var parser = new HalModuleParser();
		return parser.parseFile(filename)
			.then(
			function(fileInfo) {
				fileInfo.describe = that._binaryToDescribe(fileInfo.prefixInfo);

				that._moduleStorage.push(fileInfo);
			},
			function(err) {
				console.error('assimilateModule err: ', err);
			});
	}
/*
so, lets take our typical path:

user has old system modules, compiles new firmware.

new firmware requires new system 2 module,

we figure this out, and grab new module

before we send that, we check this new module to see what it requires.

turns out it requires a new system 1 module.

we grab this new module, and before we send that, check again to see
what it requires.

it doesn't have dependencies, so we send:

part1,
part2,
user-app


--> therefore, we need a step, post solve, that grabs our binary, and does
a dependency check on it,
how do we know to keep going?
if we suggest a file,
we need to be able to grab that file and re-process it.
 /*
go read in the file, parse the data for it, convert its precious
contents to JSON.

@param String filename
@returns Boolean