Concurrency improvements to livedata_server.

- If a subscription is stopped before it has fully started (eg, a universal
  publisher that has yielded, or a destroy()ed session), call the stop callback
  immediately in onStop, so as to not leak resources.

- In _setUserID, don't set _isSending to false until after running the stop
  callbacks for all subs; if a stop callback yielded, CollectionViews could have
  been mutated without sending messages.

- Annotate the collection-diffing code with _noYieldsAllowed.
Move _runHandler into _LivedataSubscription. Rename vars to camelcase.
Fixes to runtime universal sub creation and concurrency with re-running subs.

Meteor.publish(null, f) now starts universal subscriptions for all existing
sessions (as well as future sessions). Fixes #583. Care is taken when a session
is re-running its subs.

Re-running subs is now implemented by "deactivating" the _LivedataSubscription
object and re-creating a new one instead of "resetting" it in place. This allows
us to ensure that old publish handlers have no access to the merge
boxes (SessionCollectionViews) because deactivated _LivedataSubscriptions ignore
callbacks. Thus, we can be assured that after deactivating all subscription, the
merge box really cannot be affected by old publishers continuing to run.

Note: if a publish function has not even finished its original handler run (eg,
if running setUserId in parallel to a universal subscription, which runs in a
separate fiber from the message-handling loop), the old publish function *WILL*
continue to run (both before and after this commit). However, with this commit,
any attempt by the old publish function to call publisher methods will be
ignored instead of being perhaps-inconsistently interpreted. If a publisher
really needs to know if it has been stopped before it has finished running the
handler, it can set an onStop callback before it does anything that can yield.