Allow deleting lots of projects at once
Improve memory management

The API client maintains a dictionary of subjects for each project being
tracked. Before this commit, new entries were added whenever a new project was
added and removed when the project was deleted.

However, if nothing ever subscribed to the inner signal, the subject would be
stored but never released, because it wouldn't be possible to delete the
associated project.

This commit only stores the subject once the inner signal is subscribed to, and
removes the subject once there are no more subscribers. This makes sure we don't
leak subjects.

This also resolves the open question about exposing subjects.