New disk write clustering algorithm.

Summary:
Now that we have per-block hashes, this commit adds a new (and
hopefully improved) dirty block clustering algorithm. The new
algorithm is disabled by default and can be enabled by
new_style_write_merge sysctl.

Test Plan:

Reviewers:

CC:

Task ID: #

Blame Rev:
An uncacheable READ should be served out of the cache when possible.

Summary:
Fix for another bug that got introduced during the mergeorama.
An uncacheable READ will end up evicting the cached block (cleaning
it first if necessary). This should not happen, we should always
try and serve the cached block on an uncacheable READ. But a READ
miss will go to disk.

This bug does not affect correctness, but it could adversely impact
cache hit rates.

Test Plan:

Reviewers:

CC:

Task ID: #

Blame Rev: