Basic support for dynamically loading syntax extensions

This adds a wrapper around `dlopen`/`dlsym` etc to `std::unstable`, with some effort to get the lifetimes of the symbols from the library to be restricted to the lifetime of the dynamic library (it requires #5922 to work properly). (This lifetime stuff is helpful rather than a safety guarantee, since callbacks into the library can be saved out of view of the compiler (as happens in the syntax extension code).)

(I'm quite uncertain about this part, since I've only occasionally used these functions on Linux, and never on any other platform.)

It also adds a `#[syntax_extension="library"]` attribute which will load the library (requires the full filename), and call `register_syntax_extensions` to retrieve a vec of new syntax extensions which are added to the macros that are expanded.

See [ext/dynamic.rs](https://github.com/mozilla/rust/pull/6735/files#L6R12) for a more detailed description.

I'm only been able to test on x86-64 Linux and it doesn't break anything there, but I'm not really sure how to write tests for this.

(This is definitely not ready for general use (I've hidden it behind a `-Z dynamic-syntax-extensions` flag), but makes experimenting with/modifiying syntax extensions much easier, since they can be copied out of libsyntax for experimentation and then don't require a full rebuild.)