Improve OSD subscription handling

This branch includes some new functions in the MonClient to support subscription handling, and some small changes in the OSD that take advantage of those functions, and are more careful about sanitizing requested maps, in order to prevent the OSD from repeatedly (and accidentally) requesting old maps from the monitor.

Fixes #7395.