Break up ActivityModule so controller implementations can be package-private
Controller implementations need to be public so that ActivityModule can access them. Break up ActivityModule into smaller package-specific modules, like we do in the core, so we can reduce the visibility of the controllers.
Related to #368.