Enforce valid range split keys.

Switched MVCCFindSplitKey to do a simpler scan using the recorded range
stats to determine half-way size and finding the closest key to the
halfway mark that does violate any illegal key ranges.
Add callbacks to gossip.

Support for regexp patterns on keys to have gossip invoke callback
when new infos are added.
minor fixes

handle empty gossip list on init
CircleCI: push docker img cockroachdb/cockroach on successful master build
Merge pull request #174 from tschottdorf/master

let CircleCI push deploy image to Docker on master
Add a split key balance unittest
address feedback
Merge pull request #172 from cockroachdb/spencerkimball/valid-split-keys

Enforce valid range split keys.
Merge pull request #173 from cockroachdb/spencerkimball/gossip-callbacks

Add callbacks to gossip.
Rename Coordinator to TxnCoordSender.

For clarity of purpose. Didn't want this in the last big change.
Merge pull request #176 from cockroachdb/spencerkimball/rename-coordinator

Rename Coordinator to TxnCoordSender.
Added David's thoughts to datastore goal articulation; added client architecture section
Update README.md
Split ranges along accounting and zone configuration prefix boundaries.

Each store registers a gossip callback for accounting and zone config
maps. On callback, the zone does a binary search using the rangesByKey
sorted slice to find possible ranges which might be intersected by
config map prefixes. On possible hits, the range is dissected along
prefix boundary lines and if there's a necessary split, the range is
split and the process retried.

This allows new zones or accounting prefixes to be specified and ranges
will automatically be split to fit.
Address concerns about elegance/readability of split on config.

In the process found an error in the prefix config code exercisable
when there are successive prefixes in a config map, such as
"db1" and "db2". Added a unittest for that case.

Also, discovered we were always re-gossiping config data on every
write because we weren't paying attention to a "real" dirty bit--
we were always copying the struct in the ranged for loop and so
never setting the dirty bit to false after gossiping.
updated client architecture diagram
update to client architecture diagram
Fixed race condition in gossip callbacks test.
OK, really fix data races this time
Upgraded the gossip callback to include contentsChanged bool.

This informs the callback callee whether or not the actual contents
of the info were updated. This can save a lot of work in the event
that the new info just has a shorter number of hops or an updated
timestamp but the same contents--we expect this to be a common
occurence.