Move API packet definitions and sketch into separate files
Use robust_snprintf instead of manually checking beforehand if the buffer is big enough
Add defined flag to persistant program configuration
Refactor programs directory handling

Move the base programs directory logic to the inventory, as it will
be responsible for loading defined programs on start.

Make program_config_save take the complete config filename instead
of the program directory and build the config filename each time.
Fix signature of string_wrap
Make backup logic in program config setters more compact
Move the config filename into the program config object

Also add a proper create/destroy pattern to the program config object.
Add program_config_load function
Load defined program configs on start