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.
Several changes to ZooStorage and ExternalStorage, mostly to improve robustness:
* Reworked lease renewal in ZooStorage to handle non-linearizable ZooKeeper
  behavior (version mismatches aren't always a problem)
* Log messages for all errors, even those that are recoverable.
* Eliminated ZooStorage::renewLeaseRetryCycles: instead, retry immediately
  without releasing the monitor lock.
* Replaced "testName" mechanism for testing with "testStatus1" and "testStatus2".
Changed test for leadership: it's now OK to operate without leadership, as long as you never had it (this used to be illegal). But, once you've gotten leadership you can't ever operate without it again.
Modified CoordinatorUpdateManager so that externalLastFinished doesn't
change in external storage until recoveries complete (otherwise, a
second crash during recovery could cause information about incomplete
operations to be lost).
Added more log messages during recovery to make it clearer what is being reconstructed.
Reworked CoordinatorServerList to store a list of pending updates
in each entry and include this in the information written to external
storage. This is needed to handle situations where there are multiple
pending updates for single server at the time the coordinator crashes.
Modified BackupSelector to handle REMOVE event with no ADD event without crashing.
Improved readability of messages in ClientMain.cc (--exercise option).
Modified ServerList to log all updates to the server list.
Added --clusterName and --reset options to CoordinateorMain.
Modified MasterService and BackupService to return STATUS_RETRY if
an RPC is received before the service is fully initialized.
Removed definitions for obsolete RPC BACKUP_ASSIGN_GROUP.
Modified the cluster framework back to create the 'logs' and the 'shm' directories
using relative path. The 'logs' directory will be created based on the current working
directory and the 'shm' directory will be a sub-directory of 'logs'
Previously, Enumeration returned Key-Value objects stored in the table. This
code focusses on implementing key only enumeration, where the value (or the data
field) is not returned. This is achieved by including a keysOnly flag and helps
us in saving a lot of overhead while returning objects on the server side. Also,
a high level function nextKeyAndData() is implemented which attempts to remove
Object abstraction from the client side for enumeration.
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.