Add byteswap intrinsics for converting from big/little to host endian

These are similar to the ntoh[s|l] functions in C and have the style of
from_[be|le][16|32|64].
libnative: Use [from|to]_be16 instead of bswap16
libextra: Use from_be32 instead of bswap32 in vuint_at()

Also use the fast version of vuint_at() on all architectures since it now
works on both big and little endian architectures.
Remove `extern mod foo (name="bar")` syntax, closes #9543
Recognize LLVM 3.4 when building on opensuse with --llvm-root specified.
Fix comment that's been wrong since ancient times (thanks, @jvns).
Fix typo in lint description.
auto merge of #11265 : c-a/rust/byteswap_from, r=alexcrichton

This patchset adds intrinsics similar to the to_[be|le][16|32|64] intrinsics but for going in the reverse direction, e.g. from big/little endian to host endian. Implementation wise they do exactly the same as the corresponding to_* functions but I think it anyway make sense to have them since using the to_* functions in the reverse direction is not entirely intuitive.

The first patch adds the intrinsics and the two following changes instances of bswap* to use the [to|from]_* intrinsics instead.
auto merge of #11268 : lkuper/rust/trans-comment, r=pcwalton
auto merge of #11269 : am0d/rust/lint_typo, r=sanxiyn
debuginfo: Fix issue #11083 and some minor clean up.
debuginfo: Add test case for recursive enum types (issue #11083)
Inject std libs with versions
auto merge of #11274 : michaelwoerister/rust/issue11083, r=pcwalton

This pull request fixes #11083. The problem was that recursive type definitions were not properly handled for enum types, leading to problems with LLVM's metadata "uniquing". This bug has already been fixed for struct types some time ago (#9658) but I seem to have forgotten about enums back then. I added the offending code from issue #11083 as a test case.
auto merge of #11266 : lyuts/rust/opensuse_build, r=brson

Minor change for configuration script allows to build rust on openSUSE with using llvm installed from repos.
auto merge of #10696 : fhahn/rust/issue9543-remove-extern-mod-foo, r=pcwalton

This patch for  #9543 throws an `obsolete syntax` error for `extern mod foo (name="bar")` . 
I was wondering if [this](https://github.com/fhahn/rust/compare/mozilla:master...fhahn:issue9543-remove-extern-mod-foo?expand=1#diff-da9d34ca1d0f6beee2838cf02e07345cR4444) is the correct place to do this?

I think the wording of the error message could probably be improved as well.

If this approach is OK, I'm going to run the whole test suite tomorrow and update the old syntax to the new one.
Add Json example and documentation.
pass make check
correct typing error
correct code '''