Add explicit dependencies and wrap classes in goog.scope

This is a work in progress pull request that uses an explicit dependency system instead of the implicit dependencies.