We originally used libcurl for both downloading images from
Internet and reading local files to have the same code path for both.
It doesn't work that well in practice, as Qt and libcurl are not
on the same page how special characters such as Chinese characters
are represented in a local file URL.
So create a new class to handle local files.
Closes#76
Modern CPUs have special instructions to accelerate computing
SHA hashes.
The Qt QCryptographicHash code is standard C, so not taking
advantage of those though.
Outsource the hashing to OpenSSL that does.
Shaves off some seconds during verification stage.
- Use larger buffer size when writing uncompressed files
(was libcurl's default of 16 kb, change it to 128 kb)
- Uncompress the next MB of data, while it is hashing/writing to
disk in seperate thread.