* 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
This patch resolves several bugs:
* NetworkServer would allocate various instances of `NetworkClientInfo`.
This is patched by deallocating the NetworkClientInfo when it's
listening thread ends in the `listen_done` section.
* Memory would be allocated for threads that wouldn't be freed. This
is resolved by detaching from the threads, so they no longer need to
be joined to be freed, and then freeing the memory as they finish.
* Thread-Safety issues involving `ServerClients` would result in stray
`NetworkClientInfo`'s not being removed from the list in certain
situations. This is resolved by used a mutex to lock access to this
from different threads.