Fix anticipated pre-release calculation

This commit fixes a 0.9.3 regression where the calculation of the
topLevelPrereleases object was not updated with the introduction of
disjunction constraints (||) and would always be empty.

topLevelPrereleases and useRCsOK are merged into a single
anticipatedPrereleases option which is now passed in to the
constraint-solver package rather than constructed inside it. (This
object will also be used in ProjectContext as part of PackageDelta
calculation.)

The usedRCs return flag is now called
neededToUseUnanticipatedPrereleases.
Show package changes and prerelease warnings

This reimplements functionality that had been removed as part of the
`isopack-cache` branch refactoring.

Information about package changes is encapsulated inside a
PackageMapDelta object on the ProjectContext.  It is the responsibility
of the command that prepares the ProjectContext to choose to call
projectContext.packageMapDelta.displayOnConsole at the appropriate time
if it wishes to display changes.

Part of #3006.
Simpler PackageSource.initFromPackageDir interface

There's only one call site which always passed {requireVersion: true,
defaultVersion: "0.0.0"}, so just inline those values.

Also, move some validation of the version string into the place where it
is set instead of some other random place.
Make --get-ready do something useful

This command was changed in 0.9.0 to do something of questionable use,
and was temporarily unimplemented as part of work on #3006.  It now does
something relatively simple to describe: It prepares your current app
for build, and in addition, it downloads EVERY package in your current
release and builds EVERY available local package (including those which
you are not using in your app).
Remove 'meteor prep' command

This was just added to help in testing the work in issue #3006. 'meteor
--get-ready' now serves a similar purpose.
Remove upgrade-to-engine again

It was resurrected to make sure that people could upgrade to 1.0, but
that's over.
PackageSource and buildJsImage don't need catalog

It wasn't really being used for anything anymore except complaining
about api.versionsFrom being used during isopacket builds, which is now
implemented in a simpler way.
use sqlite instead of racy json file for banners
clean up comments and remove dead code

Part of #3006 cleanup.
remove unnecessary use of NO_METEOR_PACKAGE
improve some tests
self-test: prepare apps after createApp

This means that the first command won't need to do a big build (and
print lots of package changed notifications). Similar to what 'meteor
create' does.

Also add --prepare-app command.
fix make-bootstrap-tarballs
Support deploying to legacy Galaxy prototype
Clean up some #3006 comments
Move tryRevokeOldTokens to background fiber

And increase the timeout while we're at it.
Remove final #3006 comment
Add indices for all sqlite queries

Addresses #3043.
Optimize constraint solver's catalog interface

We shouldn't ask sqlite for a list of rows and then go back and ask for
each row one by one!

Addresses #3043.
Soft refresh, versioned packages only

First half of #3213.