steam-api: fixed missing sessionid upon authentication

The Steam Web API has been modified and as a result, the plugin is not
able to retrieve a sessionid. There is currently no immediate check in
place to ensure a sessionid is actually obtained. In addition, after the
account has authenticated, it is immediately logged in, and bypasses the
login check for the sessionid. Since the sessionid is not required for
every request, only some Steam Community requests are affected. When the
request fails the account is reconnected, and with the missing sessionid
the authentication process is initiated.

The patch addresses the changes to the Steam Web API as well as adds in
additional checks to ensure a sessionid is obtained. Additionally, the
account is now completely logged out and back in after authentication
to ensure there are no other silent failures in the future.
steam: renamed local callbacks for clarity
steam-api: replace XML character entities with certain requests

Some of the Steam Community API requests provide XML encoded character
entities for displaying the data directly on web pages. This does not
apply to this plugin since nothing is render via HTML. As a result, the
XML entities must be replaced with their representing character to have
seamless integration.
steam-api: fixed custom profile URLs causing request failures

Some requests are sent to sub-URLs of the user's profile URL. As of now,
the plugin just assumes that the profile URL is the default SteamID URL.
However, this is not the case as a user may have a custom profile URL
specified. The Steam Community does not mirror the pages at both URL
locations, but rather redirects to the proper profile URL. Since the
plugin's HTTP interface ignores redirections, any request using the
profile URL will simply fail.

This issue has been resolved by storing a SteamUserInfo in the SteamApi
for the user. The SteamUserInfo is updated on login, and during polling
operations.
steam-http: fixed memory leak with resending requests

It is possible for the SteamHttp interface to lose track of a request
that is waiting to be resent. This is typically only seen when freeing
the SteamHttp while there is a SteamHttpReq being resent. The request
should not be removed from the SteamHttp until it is actually finished.