Snapshot reads for statistics generation

This prevents the background statistics generation from causing problems for actual user sessions and lets a manual `ALTER ... UPDATE STATISTICS` actually succeed.

Two paths are now using Transaction#snapshot(): row counts from TableStatus#getApproximateRowCount() and the index scans to populate the histograms.

The new MT uses a sloppy check for the number of failures possible (< 25%) as to not get angry if a couple slip in. Before this change >50% would fail and now 0 do. 

Additionally, remove the path for memory table stats that never did anything but throw Unsupported.