Decrypt: Implement crypto functions using NSS

This commit moves DecryptStream and EncryptStream
classes to their own source files so that they can
have different implementations. Hash functions
md5(), sha256(), sha384() and sha512() are also placed
to these source files to allow different implementations.
There is internal implementation of them
in DecryptStream.{cc|h} and the NSS one
in DecryptStreamNSS.{cc|h}.

This commit also adds some new functions for usage
in functions Decrypt::makeFileKey(), Decrypt::makeFileKey2()
and revision6Hash().
These are rc4DecryptArray(), aesDecryptArray() and
aesEncryptArray().

setNSSDir() function had to be moved to its own source files
NSS.{cc|h} to have consistent initialization of NSS over
all functions which needs it.
6 jobs for implement-crypto-using-NSS in 10 minutes and 43 seconds (queued for 34 seconds)
Status Job ID Name Coverage
  Build
passed #394967
build

00:07:52

passed #394972
build_android

00:01:07

passed #394968
build_clang_libcpp

00:04:38

passed #394971
build_clazy

00:03:15

passed #394970
build_mingw64_fedora

00:03:10

passed #394969
build_ubuntu_16_04

00:03:50