Support offline mode

This pull request is a hack to get a few things supported:
* Reorders operations to check:
  1. Locally configured repositories in proxy-config.json
  2. Locally cached repositories in both /cache and /private-cache
  3. Public repositories in Github
  4. Private repositories in Github
* Supports being completely offline if everything is locally cached
* Removes checking for etags for now... eventually we should check local hashes and etags
* Converts the logic in PrivateGithubCache to use the Q promise library instead of callbacks (hacking this in b/c I was having a lot of difficulty following and refactoring the other code... sorry, not used to node style programming)