Add basic program scheduler

Dones't support all possible schedules yet.
Ensure that file/directory names are absolute and executables not empty
Remove unused errno translation
Update program scheduler also if command or stdio redirection changes

The scheduler might currently be stopped because the program configuration
is incomplete. Changing command or stdio redirection might change this
and the scheduler has to do another scheduling attempt.
Stop program scheduler if process changes to error state

In this case the program configuration is not executable and further
schduling can stop until the program configuration changes.
Log all scheduler errors
Stop program scheduler and enter error state on error
Rename occupy/vacate to the mor common terms lock/unlock
Ensure that process object are always created with an internal reference

Because an internal reference will be released ifthe child process dies.
Make process auto-destory on child process death configurable

For the public API spawn_process function is is enabled, but for process
object spawned by the program scheduler it is disabled, because the
process object should stay there until the next process is scheduled.