steam-friend: properly parse and store SteamIDs/CommunityIDs

This significantly cleans up and unifies the SteamID/CommunityID parser
and storage methods. Previously, IDs were incorrectly parsed and there
was a lot of information missing, such as the ID type and universe. This
will enable the plugin to fix current issues and implement features down
road where this information is essential. In addition, this prevents the
plugin from having to constantly reparse IDs all over the place as IDs
are now centralized in one object.
Gracefully handle NULL pointers in all freeing functions

Not everyone has the glib debugging macros enabled to return on NULL
pointers. And occasionally, NULL pointers will be passed to a freeing
function, which should just gracefully handle it.
steam-api: only handle poll messages from individuals

Several of the Steam Web API operations only work with certain types of
SteamIDs. Since this plugin only handles operations for individual Steam
friends, it should be ensured no other SteamIDs make their way into the
plugin.

This fixes the plugin getting an empty summary list when starting the
desktop Steam client.
steam-friend: fixed channel modes not being overridden

When steam_friend_chans_umode() is used to set the channel mode(s) of a
SteamFriend, the mode(s) do not override existing modes. This prevents
modes of a lower standing from being set correctly.

This patch will simply unset all other mode flags that are a higher
standing than that of the mode(s) being set.