Add support for encrypted sparse bundles.

Encrypted sparse bundles are not a simple layering of CEncryptedEncoding
on top of the virtual sparse bundle device.

First of all the encryption header is stored in the special file
'token'. Logically this data would be prepended to each band in the
sparse bundle, and then each band can be treated as separate
CEncryptedEncoding entities.
This also means that 'encryptedDataLength' in the header is always set
to 0 (since the last band can be smaller than the others), which we need
to modify the code to handle.

Second, all missing bands are exempted from the decryption process and
zeroed generated data is passed through unprocessed.

Instead of creating separate CEncryptedEncoding decoders for each band,
we optimize this by treating the whole sparse bundle as one big stream
with only one 'token' header prepended to the stream of concatenated
bands. Then we add a few exceptions and special cases in
ReadableCEncryptedEncodingStream in order to reset the block number as
soon as we move into a new band.

This appears to be sufficient in order to get encrypted sparse bundles
to work.