* Implementation note: Each AIStatusType has its own NSMutableDictionary, statusDictsByServiceCodeUniqueID.
* statusDictsByServiceCodeUniqueID is keyed by serviceCodeUniqueID; each object is an NSMutableSet of NSDictionaries.
* Each of these dictionaries has KEY_STATUS_NAME, KEY_STATUS_DESCRIPTION, and KEY_STATUS_TYPE.
*
* @param statusName A name which will be passed back to accounts of this service. Internal use only. Use the AIStatusController.h #defines where appropriate.
* @param description A human-readable localized description which will be shown to the user. Use the AIStatusController.h #defines where appropriate.
* @param type An AIStatusType, the general type of this status.
* @param service The AIService for which to register the status
* @brief Add menu items for a particular type of status
*
* @param type The AIStatusType, used for determining the icon of the menu items
* @param target The target of the created menu items
* @param statusDicts An NSSet of NSDictionary objects, which should each represent a status of the passed type
* @param menuItems The NSMutableArray to which to add the menuItems
* @param alreadyAddedTitles NSMutableSet of NSString titles which have already been added and should not be duplicated. Will be updated as items are added.
* @brief Return the set of all unavailable statuses in use by online or connection accounts
*
* @param activeUnvailableStatusType Pointer to an AIStatusType; returns by reference the most popular unavailable type
* @param activeUnvailableStatusName Pointer to an NSString*; returns by reference a status name if all states are in the same name, or nil if they differ
* @param allOnlineAccountsAreUnvailable Pointer to a BOOL; returns by reference YES is all online accounts are unavailable, NO if one or more is available