Allow watchers for the active project (#42731)
This allows packages (with Revise as the intended target) to register
themselves to be notified when the active project changes.
This will allow Revise to keep track of the appropriate source for
non-default environments.
For practical effect, Pkg (and perhaps packages like Pluto) will have
to switch from setting `Base.ACTIVE_PROJECT[]` directly to calling
`Base.set_active_project`.
Co-authored by: Jameson Nash <jameson@juliacomputing.com>