Phoenix 180

First revision for review.  There are some open points here.  Still no test case added to consume the stats.  Will do the performance test once the system is available with me.
Here's what I think we should do here:
- Store guideposts per column family. It's probably easiest if the PK is of the following form:
<cf varchar not null><guidepost varbinary null>. I'm not sure there's any value in using a VARBINARY ARRAY. We should just make sure that we can delete the old guideposts and add the new ones easily.
- Here, you'd still want to loop through the regions as above, but you want to get all guideposts for the column families involved in the query. Let's take the simple case where there's only one. In that case, you'd intersect all the region boundaries with the guideposts - this will be a bit easier if the guideposts are sorted already. The set of intersections will be what gets returned here.
- For the multi-column family case, I think we want to do the same processing as above per column family and then we'll coalesce any overlapping ranges.
- We have the intersect and coalesce methods you'll need in our KeyRange class, so the code should be relatively small