Handle Environment Better

This is a pretty big step towards having a functional init. Services
have their environment's cleared before they are started, and their
CWD's default to the scheme from which they were parsed. Both of these
things are now configurable from the config file.

This commit also has a little refactoring and other helpful fixes. Still
has bugs, but it does work.
2 jobs for dependencies in 2 minutes and 10 seconds (queued for 2 seconds)
Status Job ID Name Coverage
  Build
failed #8144
allowed to fail
build:linux:cargo

00:01:44

failed #8145
build:redox:cargo

00:02:09

 
Name Stage Failure
failed
build:redox:cargo Build

error: aborting due to previous error

For more information about this error, try `rustc --explain E0277`.
error: Could not compile `init`.

Caused by:
process didn't exit successfully: `rustc --edition=2018 --crate-name init src/main.rs --color never --crate-type bin --emit=dep-info,link -C debuginfo=2 -C metadata=7b8be86617ad44d1 -C extra-filename=-7b8be86617ad44d1 --out-dir /builds/redox-os/init/target/x86_64-unknown-redox/debug/deps --target x86_64-unknown-redox -C linker=x86_64-unknown-redox-gcc -C incremental=/builds/redox-os/init/target/x86_64-unknown-redox/debug/incremental -L dependency=/builds/redox-os/init/target/x86_64-unknown-redox/debug/deps -L dependency=/builds/redox-os/init/target/debug/deps --extern failure=/builds/redox-os/init/target/x86_64-unknown-redox/debug/deps/libfailure-fab7aa2bd823ab27.rlib --extern generational_arena=/builds/redox-os/init/target/x86_64-unknown-redox/debug/deps/libgenerational_arena-98c9360e02281807.rlib --extern log=/builds/redox-os/init/target/x86_64-unknown-redox/debug/deps/liblog-bcbd5a7d50b3cac5.rlib --extern syscall=/builds/redox-os/init/target/x86_64-unknown-redox/debug/deps/libsyscall-40b8e00052ebc68e.rlib --extern serde=/builds/redox-os/init/target/x86_64-unknown-redox/debug/deps/libserde-4c9f4f9645b6e4c6.rlib --extern serde_derive=/builds/redox-os/init/target/debug/deps/libserde_derive-bd2bb36eb0d16e48.so --extern simple_logger=/builds/redox-os/init/target/x86_64-unknown-redox/debug/deps/libsimple_logger-2639dcfdcbbc22b0.rlib --extern toml=/builds/redox-os/init/target/x86_64-unknown-redox/debug/deps/libtoml-354800df43405677.rlib` (exit code: 1)
ERROR: Job failed: exit code 1
failed
build:linux:cargo Build
error: aborting due to 7 previous errors

Some errors occurred: E0277, E0308.
For more information about an error, try `rustc --explain E0277`.
error: Could not compile `init`.

Caused by:
process didn't exit successfully: `rustc --edition=2018 --crate-name init src/main.rs --color never --crate-type bin --emit=dep-info,link -C debuginfo=2 -C metadata=ce78defb42f426c0 -C extra-filename=-ce78defb42f426c0 --out-dir /builds/redox-os/init/target/debug/deps -C incremental=/builds/redox-os/init/target/debug/incremental -L dependency=/builds/redox-os/init/target/debug/deps --extern failure=/builds/redox-os/init/target/debug/deps/libfailure-5757a54a3979cc03.rlib --extern generational_arena=/builds/redox-os/init/target/debug/deps/libgenerational_arena-1a0f984527ea6b0e.rlib --extern log=/builds/redox-os/init/target/debug/deps/liblog-f7a6d80908936a04.rlib --extern syscall=/builds/redox-os/init/target/debug/deps/libsyscall-f418cf0c4ea7ecf7.rlib --extern serde=/builds/redox-os/init/target/debug/deps/libserde-6f26f72be5165103.rlib --extern serde_derive=/builds/redox-os/init/target/debug/deps/libserde_derive-bd2bb36eb0d16e48.so --extern simple_logger=/builds/redox-os/init/target/debug/deps/libsimple_logger-b4aa20fc4c737b70.rlib --extern toml=/builds/redox-os/init/target/debug/deps/libtoml-17b32876af0e5870.rlib -L native=/builds/redox-os/init/target/debug/build/backtrace-sys-3117221cc2a253dc/out` (exit code: 1)
ERROR: Job failed: exit code 1