* Add zone flags to indicate if fields are manually configurable and if they have been manually configured
* Add flags field to segment type
* Add segment flags for group start and group member
* Add color mode support flags to zone (RGB, RBG, GRB, GBR, BRG, BGR)
* Add color mode enum to zone
* Update zone and segment description functions to support new fields
* Rename the effects-only configurable size flag
* Remove zone type and matrix map configuration from E1.31 manual configuration, use zone editor instead
* Rework DeviceResizeZone to DeviceConfigureZone
* Rework most ARGB controllers to allow zone customizations
* Rework DRGBController to define devices in DRGBDevices list (similar to RazerDevices)
* Rework NollieController to define devices in NollieDevices list (similar to RazerDevices)
* SDK Protocol
* Server sends its name to client
* ProfileManager
* Rename existing profile commands
* Add Upload Profile, Download Profile, and Get Active Profile commands
* SettingsManager
* Add Get, Set, and Save Settings commands
* Add zone::active_mode, zone::mode fields for zone-specific modes
* Add NET_PACKET_ID_RGBCONTROLLER_UPDATEZONEMODE packet for updating zone modes
* Add segment::matrix_map to segment packet
* Add NET_PACKET_ID_RGBCONTROLLER_SIGNALUPDATE packet for passing SignalUpdate signal from server to clients
* NetworkServer
* Formatting cleanup
* Use per-controller threads for handling NetworkServer controller-specific packets to avoid delays from controller mutexes
* NetworkClient
* Formatting cleanup
* RGBController
* Clean up and modularize descriptor functions
* Bumped profile version to 3
* Loading a v1/v2 profile onto a device with brightness will work
* Loading a v3 profile onto a device without brightness also works
* Add profile version parameter to Get/SetModeDescription
Commit amended for code style and to update versioning by Adam Honse <calcprogrammer1@gmail.com>