Implement Meteor.server.onConnection and SessionHandle.
Remove remaining references to login token from livedata.
Wrap calling session close callback in Meteor.defer, so that a bunch
of connections can be closed without waiting for the close callbacks
on one connection to return before closing the other connections.

Underscore internal Session field `_closeCallbacks`.

Update comment to explain the cause of the problem requiring the use
of `Meteor.bindEnvironment` with Meteor's public API.
Underscore internal `_getLoginToken` and `_setLoginToken`.

`closeSessionsForTokens` doesn't need to clone `sessionsByLoginToken`
because `onClose` callbacks are deferred.

Simplify `closeTokensForUser` by using `_.pluck`.
Move login token code into the "RECONNECT TOKENS" section.
Closing a session should be idempotent.
Space out code for readability.
Run nodejs stream client callbacks in a fiber.

Poll instead of using Deps.autorun in server test.

When polling the client connection, tests don't have a chance to
disconnect before the stream client automatically reconnects, so add
an option to disable retries for testing.

Callers of `Meteor.bindEnvironment` often have the `onException`
argument print the exception stack trace.  To allow for less code
duplication, let the argument be a string providing the context
(e.g. "connection closed callback"), and then on an exception print
the context and the exception stack trace.
Meteor.server.onConnection documentation.
Include the session handle in a method invocation instead of just the
session id.

Make _sessionData available in a nested method invocation on the
server.
Alias Meteor.server.onConnection to Meteor.onConnection
Documentation update.

Document `Meteor.onConnection` instead of `Meteor.server.onConnection`.

Condense sections about when there is a session reconnect into a
single {{note}}.

Document the `stop` handle returned by `onConnect`.

Document `this.session` in Meteor.methods section.
Check that the connection hasn't been closed already before calling
the onConnection callback.
Mention that session id's are globally unique.
Fix session handle tests so that multiple copies of the test can run
at the same time.
In the docs, refer to the public object as a "session" instead of a
"session handle".
Also make the session available in publish functions.
Add a "this.session" entry for methods in the docs.

Pull out the session object into its own documentation section.
Simplify callers of bindEnvironment by using the new string argument,
when the error callback only needs to print the exception.

Replace unsafe references to `err.stack` with
`err && err.stack || err`.  This avoids throwing a secondary exception
if the original exception in `err` isn't an object (`throw(null)` and
`throw(undefined)` are legal in JavaScript), and also displays the
error object if the stack trace wasn't included.
Remove sessionData.

Add tests to check that account data is cleaned up after a session
closes.

Make `establishConnection` available to account tests.

Remove code duplication between `poll` (now called `simplePoll`) and
the async_multi `pollUntil`.