Fixes to code to estimate runtime lower bound.

This commit refactors the code so it can more easily be
called across all of the files in a directory, and correctly
handles in-memory input data when computing the bound.
Improved naming and added code for disk breakeven speed.
Fixed bug where shuffle bytes were incorrectly counted.

Previously, the shuffle read bytes were not counted as disk
bytes, leading to an underestimation of the number of bytes
that need to be read/written to disk (because the shuffle data is
written to disk and then later read back).