After writing the above, I was thinking that one possible way of managing the ACS's complexity would be to involve a packaging system. This could be something like the Emacs packaging system, or the Debian *.deb, or the Red Hat *.rpm. Internally this would be a tarfile containing some kind of install script that could be used to place the components in the right places. It could also modify some kind of registry to indicate that module XYZ is now present and available for use.
This would allow different modules of the ACS to be inserted at a later time. However, this doesn't deal with the troublesome issue of cross-linkage between many pieces of the ACS.