Adding support for regions in unsafe pointers 

This patch series fixes #7694. The main reason for this is that without this patch it's trivial to have an interior pointer to a rust structure live past that structure's deallocation. I go into more detail in #7694 if you are curious. The end result is that if you really do know more than the borrow checker, you now need to use `cast::transmute` to convert a `*'a T` into a `*'static T` if you really want a leakable pointer.

This patch isn't quite up for commital yet though. First, it still needs to be merged into head. Second, it needs a snapshot dance in order to first allow us to parse `*'a T`, then another to actually implement the regions.

cc @nikomatsakis, as you are probably the best one to review this.