Use setImmediate instead of setTimeout for yields

It's faster and still lets IO and signals through.
Tweaks to StatusPoller

- Lower STATUS_INTERVAL_MS from 500 to 50. Note that we were effectively
  doing 150 or 100 anyway: the _pollFiber was polling every 100, and the
  nudged _throttledStatusPoll was actually throttling at the default of
  150, not 500, because the Throttled constructor was being invoked
  incorrectly (without the named 'interval' option).

- Use the same throttler for _pollFiber and nudge.
Nudge console for every compiled source file

This will refresh the status bar more often and make the build tool more
responsive to signals.

Now that yield uses setImmediate, this has minimal effect on
performance.
Upgrade esprima and escope
Don't make unnecessary cordova unibuild for app

Start on #3274.  Since we don't cache app isopacks to disk, we don't
have to worry about invalidating this.
Do not crash when source plugins conflict

Fixes #3015 and #3180.
Use case in buildmessage titles consistently

Job names should not be capitalized (so they look OK in "While xxx"
messages), and are capitalized by the progress bar.

Fixes #3003.
Don't crash on circular dependency

Previously, we would register the circular dependency error properly
with buildmessage, but then try to build the package with a circular
dependency anyway, leading to a crash.

Fixes #3280.
Don't compile web.cordova unibuilds unless needed

Specifically, we only compile them if there's a cordova platform in the
current project, or if we are publishing the package.

(Ideally, we wouldn't require every published package to have
web.browser and web.cordova unibuilds --- we'd just publish a 'web'
unibuild unless there's actually a difference between the two. But we
are not there yet.)

This adds an extra flag to isopack-buildinfo.json, so that we know to
rebuild all the isopacks when we add the first cordova platform (or
remove the last cordova platform).

The implementation around publish is a little clunky; if you're in a
non-Cordova app and run meteor publish, it will rebuild all the packages
with web.cordova, and the next time you prepare the app it will rebuild
them again without it. It does work though.

Fixes #3274.
publish in app: don't write, display versions

Typically, there is a delta due to adding the test slice of the
published package, but there's no reason to tell the user about this or
save it in .meteor/versions.
Bump versions for 1.0.2.
Fix app build for Cordova

Caught by a zillion tests, oops.  But not by --prepare-app!
1.0.2-rc.2
Merge
Merge branch 'meteor-release-1.0.2' into devel