Recover small files (< 1mb) using a separate threadpool different than large files

This allows ES to avoid the case where new shards (like those created when an index is created) to be recovered and initialized while larger recoveries are going on.

It defaults to up to 2 threads and can be dynamically updated, similar to the `concurrent_streams` setting (the setting is `concurrent_small_file_streams`)

Fixes #3576