Add syntax extensions for lowercasing/uppercasing strings (Fixes #16607)

Testcase:

```
 #![feature(macro_rules)]
macro_rules! identify (
  ($i: ident) => {
    let $i = to_lower!(stringify!($i));
  }
)

fn main() {
    println!("{}", to_lower!("FooBar"))
    println!("{}", to_lower!(stringify!(FooBar)))
    println!("{}", to_upper!("FooBar"))
    println!("{}", to_upper!(stringify!(FooBar)))
    identify!(FooBar);
    println!("{}",FooBar)
}
```
Ok, thanks. Should the `sp` in the final `MacExpr` be `sp` or `span`? It might end up with the wrong span on expansion -- I'm not entirely clear on how `ExtCtxt` works to be sure of this, and I'd rather not wait for two full builds to see ;)