Implement parallelized, pipelined prefetching of WAL

This is intended to achieve a drastic performance increase in WAL
application in many situations.

This is done by using some temporary directories and daemonized
sub-processes, implement a prefetcher that can hopefully pipeline
downloading WAL to be applied while Postgres is performing other WAL
recovery.
If I understand this correctly, if I'm running `wal-fetch --prefetch=0`, running `wal-prefetch` in parallel at any time won't do anything, whereas running `wal-prefetch` with a parallel `wal-fetch --prefetch=1` will give me a temporary restore performance improvement. Is this the desired behavior?

I.e., if `prefetch_max` is 0 but the cache location is well-defined and exists, we still might want to check the cache. That way, I can run elect to run `wal-prefetch` once and then go back to not prefetching. Or, if I change my `restore_command` to set `--prefetch=0`, we can still use any existing prefetched segments.