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!
Renamed and constified many things for consistency and safety

This renames several core types for the sake of consistency. In
addition, several things were constified for increased safety.
steam-api: refactored for simplicity and readability

Previously, the SteamApi interface was rather complex, and hard to
follow. This simplifies it greatly, and helps improve the readability.
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.