Give each part of productivity its own state

This allows other modules to require parts of the productivity without
including everything. For example, we need vim to install vim modules,
but we don't need tmux.