std: add very basic wrappers around dlopen/dlsym for experimental dynamic library loading
syntax: add very basic support for dynamically loading syntax extensions.

This adds a `#[syntax_extension]` attribute that loads an external Rust
library and allows it to register arbitrary syntax extensions. This requires
the `-Z dynamic-syntax-extension` flag.

The library name to load must be specified in full, and the attribute only
works at the crate level so this will not work cross-platform.