preparing for resolving dependencies

@MatthewMueller @ianstormtaylor this is what the previous 4 PRs look like squashed. I have also added 1 more method, `compileDependencies`, which will hopefully be a place where we can run through the dependencies on last time and adjust the `*` (so we can fix that one issue) and perhaps work toward the versioning stuff we were mapping out a bit here https://github.com/duojs/duo/issues/296.