steam-http: refactored the internal storage of headers and parameters

Currently, the plugin stores escaped values within the internal storage
structures. This is problematic when a value needs to be retrieved or
modified. Storing unescaped values will help keep the HTTP interface
sane and consistent when it is extended in the future.

Additionally, many months ago with e2fb61f the plugin was switched from
GTrees to GHashTables. This seemed like a good idea at the time, but
with all of the traversing, GTrees are in reality a better option.
steam-http: implemented cookie handling support

Future implementations will require cookie support to properly
initialize Steam Community API requests.
steam-api: provide a SteamSummary for returned list items

Rather than returning Steam IDs and then requesting SteamSummaries,
request SteamSummaries internally and return them. This leads to
significantly fewer HTTP requests being made as up to 100 summaries
can be requested at once. And alike requests can be shared, rather
than sending another request. Additionally, this makes working with
the SteamApi interface much cleaner.
Implemented friend management capabilities

This introduces several far overdue features relating to Steam Friend
management. Many of these features have been possible since the birth
of this plugin, however, there was no JSON parsing capabilities.

This patch introduces several more Steam Community API requests. These
new requests require a session ID which is obtained during the
authentication process. As a result, this patch will require the user
to reauthenticate so that a session ID can be obtained.

Introduced features:
  - Friend addition
  - Friend blocking
  - Friend removal