backend: fix forking code

Forking code would never be triggered on startup as get('nipapd',
'foreground') returns string 'false' and not boolean False. getboolean()
fixes that. Funny how we use getboolean to get the value of the
foreground option in other places in the code.

The actual forking code is moved somewhat to play nicely with the
bind_sockets calls.

There is no automagic way of killing of the children processes if the
parent is killed so we now install signal handlers and manually loop
over the child processes to terminate them.
Add dependency on psutil
Disable a restart to pass tests