bugfix: ensure 'start' actually daemonises

Putting the '&' in a variable and evaling it as part of a command line
doesn't seem to actually work as one would expect. So instead run the
application with or without the '&' in an if/else conditional based on
how we're called. Also split out the entire command line in a variable
to reduce the amount of duplication inside that if/else.

This also fixes a bug that caused the -Dconfig.file command line
argument to be conflated with the value of -Dapp.name, rather than being
interpreted as a separate command line argument with a value of its own.