Reworked crypto and file classes

Changes:

Replaced the unsecure AES ECB mode encryptor with a AES CTR mode
encryptor. This implements the interface Crypter. Secrecy could use
different implementations of this interface for encryption.

The AES CTR encrytor uses a random AES key to encrypt all files in a
vault. This random AES key is stored encrypted with a key, generated
from a passphrase and a random salt using PBKDF2.

Each file has a header with a random nonce for the AES CTR encryption.
Filenames are replaced with random UUIDs and the original file name is
stored encrypted in the file header.

The old File class is replaced by the abstract class SecrecyFile which
has two concrete sub-classes: EncryptedFile and EncryptedThumbnail.
These  two are created and loaded by the EncryptedFileFactory.

Events are now models as own classes. I think this improves readability.

Two own Exceptions SecrecyCipherStreamException and SecrecyFileException
are introduced to handle special exceptions.