WIP: Use sync primitives; Better Path::scheme impl

ServiceGraph is now a thread-safe data structure, using an RwLock for
the DepGraph and CHashMaps for everything else. That also means it has
complete interior mutability, so it should be much easier to share
across threads.

Disclaimer: I haven't been able to test this commit because it triggers
an invalid opcode fault without panicking. Currently working on
debugging this.
2 jobs for dependencies in 2 minutes and 45 seconds
Status Job ID Name Coverage
  Build
failed #8191
allowed to fail
build:linux:cargo

00:01:32

passed #8192
build:redox:cargo

00:02:44

 
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=05a5fe364d016b21 -C extra-filename=-05a5fe364d016b21 --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 chashmap=/builds/redox-os/init/target/debug/deps/libchashmap-f455e0e50ed4bb1f.rlib --extern failure=/builds/redox-os/init/target/debug/deps/libfailure-84a6643815615c78.rlib --extern generational_arena=/builds/redox-os/init/target/debug/deps/libgenerational_arena-82296883cfa3d24a.rlib --extern log=/builds/redox-os/init/target/debug/deps/liblog-b46f7596cd09b0de.rlib --extern syscall=/builds/redox-os/init/target/debug/deps/libsyscall-190654f8d53b8bb9.rlib --extern serde=/builds/redox-os/init/target/debug/deps/libserde-acc688a467bc308c.rlib --extern serde_derive=/builds/redox-os/init/target/debug/deps/libserde_derive-eadd7d3fe57e9cce.so --extern simple_logger=/builds/redox-os/init/target/debug/deps/libsimple_logger-b9f64cad1c47f009.rlib --extern toml=/builds/redox-os/init/target/debug/deps/libtoml-2a514ac0c801e966.rlib -L native=/builds/redox-os/init/target/debug/build/backtrace-sys-9ba51a5fd094d68c/out` (exit code: 1)
ERROR: Job failed: exit code 1