Documented the inner workings of the plugin

This should help with understanding and reading the source code of the
plugin. Which should enable easier and faster patch creations from third
parties!
Added constness to several definitions for increased safety
steam: reorganized information output

This cleans up and condenses the output of the info command.
Refactored enumerator translations

This cleans ups, and unifies similar code blocks.
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: merged the functionality of SteamAuth

This removed the convoluted SteamAuth interface which complicates the
over all authentication process.
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.
steam-api: retrieve extra information for summaries

The current summary information does not include all of the required
information, such as last viewed and last message times. In addition,
this also validates the information which has already been populated.
On occasion, some game statues are not updated correctly, mostly with
non-Steam games.