getBuildsForArches is only on catalog.official
Two other build calls are only on catalog.official

getAllBuilds and getBuildWithPreciseBuildArchitectures
Refactor LocalCatalog

- Simplify internal data structure to just have one map of name ->
  various data instead of a whole bunch of different unsynchronized data
  structures (most of which were used with frequent O(n) operations).

- Move the getLoadPathForPackage logic which combines local and remote
  packages into LayeredCatalog from LocalCatalog, and delete the
  unnecessary copy in BootstrapCatalogCheckout.

- Rename a bunch of fields to make it explicit which ones contain
  package objects, which ones contain package directories, and which
  ones contain package *search* directories

- Replace random version IDs and a long comment about why random is safe
  with sequential. (I don't think these version IDs are ever used
  anyway.)

- Drop unused "initializing" option to refresh

- Drop redundant call to _recomputeEffectiveLocalPackages in
  addLocalPackage (it is called immediately below by refresh).
Add return types and properties types in JSDoc to a lot of methods
More return tags for Collections
Update data.js and names.json
Fix failure for local packages to depend on built

Bug introduced in 0.9.4. This only seems to occur in some contexts; a
way to consistently reproduce is:

  $ rm -rf packages/test-in-browser/.build.test-in-browser && curmeteor test-packages
  [[[[[ Tests ]]]]]

  => Started proxy.
  => Started MongoDB.
  => Errors prevented startup:

  While Building package `test-in-browser`:
  error: package not available: bootstrap
remove unused var
cleanup test-packages

- Errors in merging the cordova branch against 273b70bea48a189bd73 left
  in an unnecessary getLocalPackages function

- LocalCatalog.getLocalPackageNames is unnecessary (it's the same as
  getAllPackageNames!)  CompleteCatalog.getLocalPackageNames is OK I
  guess.

- getPackagesForTest returned some extra data that was only used to call
  the nonexistent catalog.removeLocalPackage method.  Meh, we don't
  clean up the catalog when the command ends now (which doesn't happens
  unless you're using --once anyway). We'll probably fix this by making
  catalog.complete less global soon anyway (ie, it should be build-specific).

- Fix a duplicate test runner app cp_r
Docs correction: DOMNode -> DOMElement

Because CSS selectors match only elements and not nodes
Move misplaced comment
Get rid of many calls to doOrDie/doOrThrow

The things they wrap no longer make buildmessages.
drop unnecessary dangerous buildmessage.capture

unnecessary: because dontRunConstraintSolver now means we don't need to
be in a buildmessage.capture

dangerous: because if you don't check the result of
buildmessage.capture, you leak errors.
Remove more unnecessary buildmessage.captures

Part of #3003.
de-globalize console.js constants
progress: remove duplicate assignment
console: avoid division by zero
Revert "console: avoid division by zero"

This reverts commit 2d83bad8f324bd25b884ee1cc2a3fd4924908072.

Whoops, that's not how division by zero works in JS! The existing
isFinite check is fine.
Check for the downloaded tarball plugin matching the requested name

Hackily parse XML with a regex (omg, never do this again) and check the plugin
id declared with id requested.

Should fix #2862.
console: missing vars