Move ConsoleUI to init package

It is awkward to have the init-api rule depend on exactly one class in
a non-init package. This is a backwards incompatible change to the
plugin API, but it's trivial for plugin authors to update.

Change-Id: I8a6fcfdaeb0b509f05af971f9fdbdb270fe65fb6
Move init-api rule srcs to a subpackage, init.api

Previously, the only way to see the boundary between the init-base
package and -api was to look at the list of srcs. Putting a package
boundary between them makes it easier to understand without reading
the BUCK file.

Change-Id: I2ccb43cc9154b6979a867b01b4e3ea86070dc30f
pgm: Rename init-base rule to init, matching package name

Change-Id: I23d45e17dd427c82375dd582d94dbb8ba3b8ce9e
Split pgm:init rule into init and util

We have a package boundary between these rules, so a rule boundary
also makes sense.

Change-Id: Ie9669b6628552c8b6b5ac2e8bd0841b5fb50d1c9
pgm: Move gerrit.sh and BaseInit to init subpackage

Since the path to gerrit.sh was previously resolved relative to
BaseInit within SitePathInitializer, move gerrit.sh to an init
subdirectory as well.

Change-Id: I4110a395e3e426faf5d8ed29db86f27a4790f69b
Move libraries.config to init subpackage

This resource is only used by init/Libraries.java, and after moving
this the resource globs can fall along package boundaries as well.

Change-Id: Id62aeb5bbcaa97509ccab47ecdf377d0a02da59a
pgm: Explicitly list subpackage srcs in the pgm rule

Explicitly listing srcs rather than excluding srcs belonging to all
other rules makes it harder to forget to add other rules' srcs to the
exclude lists.

Change-Id: I39e82b7ff8520e41088fdde63a8ac04a2fabe2c7
pgm: Fix some ordering in BUCK

Change-Id: If2674e5b5d766f111128d606e4fa57d44027fc5a
pgm: Add utility for limiting threads based on DB pool size

Change-Id: Ia398bd289996c1010d7c487246c791f970ddfa89
Factor out common modules from Reindex

As far as programs go, Reindex has about the most complicated
injection stack. This will be useful for future programs, for example
a Reindex analogue for notedb, so move them to the util package.

Change-Id: I7f980c0918b6893e4d421f0ba8a12e96bb01d20d
Support empty ChangeUpdates

To create a change in the notedb and ensure the meta ref exists, we
need a root commit, but thus far we don't have anything else to put in
the root commit, so it is effectively empty. Ensure this code path
works.

Change-Id: I3e5496c7019f083401ef24e430e2b9f89c9936b4
BatchMetaDataUpdate: Factor out updateRef() method

The only difference between the create and update cases was to throw
an exception on UPDATE_FASTFORWARD in the create case; but this can
never happen.

Change-Id: Iac4c5e6dc803f56f83cb2954586eb96c3b566904
TestChanges: Use incrementing integers for IDs

This will allow us to test multiple distinct changes in a single
method.

Leave a method allowing a custom ID to support tests of stable
refnames.

Change-Id: I749ab839d95d1ad9a2902210ce3ab0b191babd8e