Addressed several control flow and erroring issues

This patch addresses:
  - Cleaned up instances of break-less switching
  - Fixed integer underflows with mode setting
  - Removed stray semicolon preventing NULL check
steam-json: refactored for better control flow and readability
steam-api: fixed failing friend additions and removals

The friend removal and addition operations were failing due in part to
checks incorrectly detecting errors. Additionally, the friendship states
were being ignored during the polling operations.
steam-api: fixed authentication failures with captcha and SteamGuard

There is a global error check for all API requests and their replies,
which was preventing authentication information from being retrieved
and stored. This caused the SteamApi interface to fail when captcha or
SteamGuard information was required. The fix for this is simple, just
ignore these errors on a global level, and handle them locally in the
authentication callback.
steam-http: fixed case-insensitive comparisons failing for GHashTables

Currently, the GEqualFunc given to GHashTables is g_ascii_strcasecmp(),
however, this does not match the required function signature. The return
value should be a gboolean, rather than a comparison integer.

This addresses a slew of issues, namely values not being set and updated
correctly. This led to issues such as the account requiring a fresh
session identifier at each login since it was not stored correctly.