Enh: Use prompt for authentication

Use prompt to handle authentication rather than accept command line
arguments via stdio. Using a prompt to request the authentication
information provides security benefits over passing sensitive
information via the command line, as the sensitive information is no
longer visible in the console nor is it saved to its history. The prompt
package also allows for hidden properties, which can be applied to the
password property for extra security. Another benefit is that the prompt
package is asynchronous, whereas stdio is not.
Fix: Steam Guard code may include digits
Maint: Use asynchronous fs methods

Prefer the asynchronous fs.writeFile and fs.readFile over the

synchronous versions.

Ref: http://nodejs.org/api/fs.html
Maint: Remove Steam Guard code check

Pass undefined if a Steam Guard authentication code not was provided.
Maint: Save bot persona state

This change is mostly in preparation for future functionality. For
example, a potential bot command may be added to allow a user to restart
the bot. Upon the subsequent reconnect, the bot should remain in the
state from its previous session.
Docs: Update note regarding Steam Guard code

If a valid sentry file exists, Steam will ignore the Steam Guard code if
one is provided.
Maint: Fix error message for Steam Guard code

Update the error message for the Steam Guard code property to note that

digits are also allowed.
Fix: Use asynchronous file writing

Forgot to update to fs.writeFile from a previous commit.
Maint: Use Function.prototype.bind()

Bind the bot's context to each callback instead of relying on redundant
anonymous callbacks or saving the object to a temporary variable.

Ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
Docs: Update note regarding Steam Guard code

Remove language involving the need to remove the Steam Guard code, as it
must be entered manually via the console when the bot is started.
Maint: Restructure error message language

Restructure the language used for all error messages to better clarify

the type of error.
Maint: Provide error messages for all properties

Provide error messages for the username and password properties. These

messages clarify that these properties are required.
Maint: Tweak language for error message

Tweak the language for the Steam Guard code property's error message.
Maint: Return early instead of using else
Test: Add initial test framework

Add tests for SteamChatBot.Connect(). Three tests have been added to
test use cases for: when a username and password are provided, and a
sentry file does not yet exist; when a username, password, and Steam
guard code are provided, and a sentry file does not exist; and when a
username and password are provided, and a sentry file exists.
Test: Add Travis CI support
Docs: Add build status icon
Docs: Add dependency status icons