Refactor module cache
Refactor module cache

- Large functions doing too many things were broken into smaller
  functions doing one or a few things
- Functional behavior preferred over side effects
- Async handled with bluebird to enable stack traces and better error
  propagation

gameclosure/devkit,gameclosure/devkit,gameclosure/devkit