Написать программу, сжимающую данные из некоторого файла по алгоритму Хаффмана.  
Программа должна выполнять следующие действия:  
**Сжатие данных:**
1. Открывать файл, подлежащий сжатию, как бинарный файл байтов.
2. Подсчитывать частоту вхождения каждого байта в файле.
3. По имеющимся частотам строить дерево Хаффмана.
4. Создавать новый файл-архив.
5. Записывать в файл-архив заголовок – байты с частотами их вхождения.
6. Последовательно считывать байты исходного файла, кодировать их и записывать в файл-архив.
  
**Распаковка данных:**
1. Открывать файл-архив.
2. Считывать из файла-архива заголовок и строить по нему дерево Хаффмана.
3. Последовательно считывать байты файла-архива, анализировать байты побитно с помощью дерева Хаффмана и записывать найденные в дереве байты в новый файл.