Platform abstraction
====================
ZombieBox предоставляет абстракцию над платформой, обеспечивая
кроссплатформенную разработку - единожды написанный код будет работать
на всех требуемых платформах.

Но при этом есть ограничения отдельных платформ, не позволяющие в полной
мере реализовать всю функциональность.

Абстракция над платформами предоставляет следующие интерфейсы:

-   _**ZBPlatform**_ - входная точка для платформы, отвечает за сборку,
    конфигурирование и передачу реализованных компонентов в процесс
    сборки приложения;

-   _**IDevice**_ - основной компонент платформы, инкапсулирует в себя
    остальные компоненты, содержит логику по обработке<abbr title='On-Screen Display'>OSD</abbr>, отвечает за создание видео-объекта, инициализацию и выход
    из устройства;

-   _**IInfo**_ - предоставляет информацию об устройстве. Например,
    серийный номер, модель, версия программного обеспечения и т.д.;

-   _**IInput**_ - отвечает за обработку нажатий кнопок и перемещение
    курсора (если поддерживается) устройств ввода;

-   _**IStorage**_ - предоставляет возможность сохранения данных на
    клиентском устройстве, сохраняющиеся между запусками приложения;

-   _**IVideo**_ – видео-объект, реализует API по управлению потоком,
    воспроизведением, громкостью, пропорциями и соотношением сторон.
    Обеспечивает транслирование событий по воспроизведению видео потока;