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.