Attempt at splitting out and cleaning up the custom multi inputs commit.

This has two critical changes in it:
 - Multi-inputs that pass via a in memory map rather than stringified in config.
 - Combines splits smaller than block size.

Im not sure how `FileInputFormat.getInputPaths` is used. If you have multiple `formatClass`, `mapperClass` pairs, then will this overwrite the input paths for the whole job?