WIP: Remove non-canonical paths; Port to R2018; Other Improvements

Non-canonical paths will ideally be re-implemented better at a later
time. Right now I'm just working on getting something simple with
threading, so non-canonical paths aren't a priority.

Also ported to rust 2018, because why not.
2 jobs for dependencies in 2 minutes and 26 seconds (queued for 3 seconds)
Status Job ID Name Coverage
  Build
failed #8092
allowed to fail
build:linux:cargo

00:01:48

passed #8093
build:redox:cargo

00:02:25

 
Name Stage Failure
failed
build:linux:cargo Build

error: aborting due to 6 previous errors

For more information about this error, try `rustc --explain E0308`.
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=4c33e3233155eb91 -C extra-filename=-4c33e3233155eb91 --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-4d8535aac29acbda.rlib --extern generational_arena=/builds/redox-os/init/target/debug/deps/libgenerational_arena-b511e8d47d9e0628.rlib --extern log=/builds/redox-os/init/target/debug/deps/liblog-fb3abc50519bbf83.rlib --extern syscall=/builds/redox-os/init/target/debug/deps/libsyscall-a55ea8aa0ba9d961.rlib --extern serde=/builds/redox-os/init/target/debug/deps/libserde-0d18c90f69382ae1.rlib --extern serde_derive=/builds/redox-os/init/target/debug/deps/libserde_derive-8787f4d5a6fae6f9.so --extern simple_logger=/builds/redox-os/init/target/debug/deps/libsimple_logger-dcadb2721a61ca42.rlib --extern toml=/builds/redox-os/init/target/debug/deps/libtoml-8d7b0802bcb960db.rlib -L native=/builds/redox-os/init/target/debug/build/backtrace-sys-d33a44fdb248549a/out` (exit code: 1)
ERROR: Job failed: exit code 1