Use correct error code in directory_create_helper

API_E_INVALID_OPERATION means that the current state of an object does
not permit the requested operation, but a directory with more than the
last part missing can never be created non-recursively. That's why the
correct error code is API_E_NOT_SUPPORTED.
Add string_get helper function
Remove list_create function, use list_allocate instead
Don't allow async file read with a length shorter than 1 byte
Make file_read report API_E_NO_MORE_DATA for EOF instead of returning 0
Make object_create fail if initial reference count is zero
Add custom option storage to program object
Ensure to uses the same log base name for stdout and stderr redirection

Also include microseconds into timestamp to reduce the chance for log
filename collisions.
Adapt to string_append/copy signature change
Use more appropriate error codes in some program object getters
Update API sketch
Add get_processes and get_defined_programs

First step to get rid of the inventory object.
Log process object state by name
Remove inventory object
Properly load program config value defined