ZVISION: Create zvision bare structure

Add zvision base engine to engines/zvision as well as
modify the necessary engine files (configure.engines, etc.)
in order for it to be recognized.
ZVISION: Allow detection to go off inner directory

Game detection needs to be off an actual resource, but all the resources
are in subdirectories. This updates the code to search for the specific
subdirectory.
ZVISION: normalized file endings
ZVISION: Alter video handling to follow the new video audio track wrapper.

Commit 7a49802c01b0c39be4e86335689db8f3359fde68 created an audio track
hook that allows video decoding to use a differnt audio track encoding method

Also, re-normalize line endings
ZVISION: Add support for ZFS archive files

ZfsArchive implements Common::Archive.
ZVISION: Add xor encryption handling to ZfsArchive class
ZVISION: Clean up includes
ZVISION: Create skeleton engine and move code away from Engine::Run

The goal is to have Engine::Run as clean as possible. Aka mostly method
calls.
ZVISION: Create utility function that writes File contents to another File

scr files are stored and encrypted in archive files. This is an easy
way to dump them for debugging purposes.
ZVISION: Create Object class.
ZVISION: Split puzzleControl into two files. Add ResultAction enum

After further investigation, puzzles and controls don't really share any
structs. So it makes more sense to keep them seperate.
ZVISION: Add documentation to utility functions and add a glorified trim function
ZVISION: Create base puzzle parsing.
ZVISION: Fix code formatting to follow the convention
ZVISION: Convert 'Object' implicit conversion operators to accessors

Implicit conversion, while simple can cause problems and doesn't
show exactly how to get the value.
ZVISION: Force 'Object' constructors to be explicit.
ZVISION: Move initialization code from run() and into its own method
ZVISION: Modify utility and puzzle comments to make them more clear
ZVISION: Convert union of pointers to union of values except for String.

Instead of storing everything on the heap, only store Strings on the heap.
For Strings, store a char array pointer instead of an actual String object
since String objects are fairly large.
ZVISION: Add documentation to 'Object' accessors