Allow linking against crates with #[no_std]

Previously having optional lang_items caused an assertion failure at
compile-time, and then once that was fixed there was a segfault at runtime of
using a NULL crate-map (crates with no_std)
auto merge of #7874 : alexcrichton/rust/opt-lang-xcrate, r=thestinger

Previously having optional lang_items caused an assertion failure at
compile-time, and then once that was fixed there was a segfault at runtime of
using a NULL crate-map (crates with no_std).

Now crates with/without `#[no_std]` (and also missing lang items) should work a bit better.

Closes #7852