Clarify and check UTF-8 encoding of device strings
Substitute "magic" numbers
Replace `ambit_device_info_t *` use with a C++ `DeviceInfo` object

This eases working with the C character arrays from `libambit` as we
can now map back and forth between the assumptions of that library,
UTF-8 encoding for example, and the `openambit` code in `DeviceInfo`
constructors and assignment operators.
Fold support status propagation into `DeviceInfo`
Make `ambit_device_info_t` use null terminated strings

This also fixes up confusion about the various types of names.  There
is a `name` for display, there is a `model` for the clock's nick name
and then there is the HID device's `product_string`.
Fix logical scoping of `#endif` and C89 variable declaration scope