[RFC] Address space preserving bitcasts

@maleadt worked towards supporting the CUDA/PTX backend in llvm in Julia. He presented his work in https://groups.google.com/forum/#!topic/julia-dev/doQUqQabC8A, because he will not be able to spend much time on it in the coming months. 

I personally would like to see support for this in Julia and planned to work on something similar for the OpenCL/SPIR backend in llvm. 

In order to integrate @maleadt work with upstream Julia I plan to submit PRs for separated concerns so that they can be properly discussed. 

First up is address space preserving bitcasts.

@maleadt do you have time to explain shortly the rational behind this?

Cherry-picked from:
6c4fbcc and  855bb43