steam-api: refactored for simplicity and readability

The SteamApi interface was rather complex, and hard to follow. Moreover,
this led to the underlying and overlying interfaces becoming complex as
well. This patch addresses the refactoring of the SteamApi as well as
all other related interfaces that are influenced by the SteamApi.

In addition, this fixes:
  - Session relogons not grabbing fresh information
  - SteamUserInfos not being updated fully
  - Various memory leaks
Refactored enumerator translations

This cleans ups, and unifies similar code blocks.
steam-api: merged the functionality of steam-auth

This removed the convoluted SteamAuth interface which complicates the
over all authentication process.
steam: reorganized information output

This cleans up and condenses the output of the info command.
steam: implemented additional state information

Additional information is available for Steam friends which holds flags
pertaining to the friend state. This includes determining if a friend is
using a web or mobile client as well as big picture mode.
steam: implemented last online information

The last online time is sent via the user summary request, and has been
for quite sometime. The plugin should make use of this timestamp, and
show the user when a friend was last online.
steam-api: denote non-Steam games via the game name

The Steam Web API will send the game ID along with the game name if and
only if the game is a Steam game. Otherwise, only the game name will be
sent. This makes it rather trivial to detect if a game is a Steam game
or not. If a game is not a Steam game, it should denoted as such, much
like in the main Steam client.