Define a python helper class to wrap array properties
Removed some outdated code from devices in python binding
Support for autoconverting sizables to arrays in mid-level python binding.

Done with isinstance for any parameter that is a pointer to foo.
This is fragile, but robust enough as long as it's used correctly.
In some cases, i.e. accidentally passing a list instead of a handle, it will self-invoke None*len(foo), which obviously makes no sense.
Fix some small bugs and typos
Python bindings can obtain and return output info
Python bindings support the new physical outputs completely
Arrays will shortly be mapped to Python tuples; consequently killed the overcomplex wrapper
Python bindings now support arrays
New template context/piece of extracted info: constants_by_enum

Keys are enums, values are all constants forming that enum.
Properties may have a linked "value_enum".

In addition, get_info.py extracts this and adds it to the list of important_enums,
those enums which need to be mapped publicly.
Support for auto-binding enums to python
Support for returning/setting properties with enums in python
Full support for boolean properties.

These are int properties with an implied range of [0, 1] which exist to tel the bindings generator when to bind as True/False instead.
Bug fix: if the output object is suspended, properly zero the output block
The python bindings are properly distributable
Hook binding generation into the build process
Some support for multiconfiguration cmake generators