Add simple microbenchmark that measures how fast ObjectManager::readObject
is and how well it scales as we add threads.

It looks like if we can fix TabletManager, we should scale almost linearly
up through 16 threads on rcmonster. Unfortunately, right now TM is killing
us with a single global lock and we just don't scale at all.
Checkpoint an enormous amount of changes and bug fixes that I'll need to
eventually clean up and push.
Replace a missing '!' that got lost in HashTable.cc. Works quite a bit
better now.
Fix a handful of minor bugs, remove the keyLength field from tombstones
(it's not needed), and change the default cleaner balancer to a 40%
tombstone ratio (it's the all-around best according to my expeirments).
Changes recovery.py default settings to set up a single large partition.

Previously, recovery.py sets up the old master to be crashed with 5 partitions.
Now, the script defaults to setting up a single partition 5x the size. Without
support for tablet partitioning, you can expect a single recovery master with
recovery taking 5x longer than the previous default settings.
Adds tablet splitting and tablet partition packing for master crash recovery.

During master crash recovery, the tablets to be recovered will now be divided
into partitions no larger than 600MB or 3M records in size, the partition
limit.  Previously, exactly one tablet would be place in each partition
regardless of the tablet's size.  Now, any tablet larger than the partition
limit will be split into multiple tablets smaller than the partition limit.
Tablets are then randomly packed into partitions to form partitions sized close
to but less than the partition limit.
Fixed irreproducible core dumps in CoordinatorServerListTest, which
came from improperly terminated argument lists to the TestLog::Enable
constructor.
Added new method AbstractServerList::getStatus, modified
AbstractServerList::nextServer that it can return crashed servers
as well as up servers.
Small modifications to ClientMain.cc: set line buffering, initialize
context properly (no separate thread).
Fixed bug in coordinator crash recovery where master recovery was
being restarted for crashed nodes before the coordinator had finished
its own recovery (table information had not yet been reloaded, so
the crashed masters appeared to have nothing to recover). As part of
the fix, moved code to restart crash recovery from CoordinatorServerList
to MasterRecoveryManager::start.
Minor change to ClientMain.cc to speed up the --exercise option.
Improved logging in TableManager.cc.  In particular, log actions *before*
doing them, so that if an action fails in the middle the log will identify
what the system was trying to do.
Reduce log clutter from repeated error messages in InfRcTransport.cc.
Modified ServerIdRpcWrapper to increase the retry interval during
repeated transport errors.
Previous commit caused assertion failure in tests; this fixes.
Moved the last part of initialization in CoordinatorMain.cc to a separate
thread to avoid deadlock over the dispatch lock.
Promoted 2 log messages in BackupMasterRecovery from DEBUG to NOTICE.
Fixed crash in CoordinatorServiceTest (I'm not sure why this didn't
start causing problems a long time ago).
Modified MasterRecoveryManager so that the Recovery object isn't created
until a task runs (moreover, tableManager.markAllTabletsRecovering isn't
invoked except inside tasks). This fixes a deadlock over the TableManager
lock during coordinator startup.
Modified ServerIdRpcWrapper so that if transport errors occur repeatedly,
and the code is running inside the coordinator, it calls into
CoordinatorServerList to start crash recovery (needed to prevent deadlock
during coordinator startup).