steam: fixed potential NULL pointer dereference with user statuses

There was a rare corner cases that might allow for the dereference of a
NULL pointer with steam_user_status(). The steam_user_status() function
should gracefully attempt to grab the bee_user_t if it is NULL, rather
than relying on the caller to NULL check the bee_user_t.
steam-api: fixed information requests not populating

If a SteamApiReq had more than SteamUserInfo with the same SteamUserId,
the SteamUserInfo would be skipped. The solution is to reverse the way
in which GHashTables are used for SteamUserInfo population.
steam-util: refactored steam_util_markup_unescape_text()
steam-util: added SteamUtilEnum array nullifier macro
steam-util: implemented debugging utilities
steam-id: implemented the SteamID interface

This implements an elegant interface for working with 64-bit SteamIDs.
The interface is implemented with only a simple series of macros, which
eliminate the need of storing the SteamID in abstract data formats. As
are result, the steam-id interface requires very little memory.

This removes the existing SteamID implementation within the steam-user
interface.
steam-crypt: implemented cryptographic interface

Currently, the plugin handles some cryptographic operations internally
via GMP. However, as time has progressed, it is has become evident that
this is not practical. This was done initially to prevent from having to
implement and maintain the three different SSL libraries which bitlbee
supports.

Advantages of libgcrypt:
  - Available on most systems
  - Has the required cryptographic implementations
  - Prevents the implementation of three SSL libraries
  - Required by bitlbee for OTR support

The cryptographic interface is based on libgcrypt. As a result of
introducing libgcrypt, GMP is no longer needed.