[libomptarget] Implement hsa plugin
This is a close approximation to the plugin we are using in production.
Differs in that a header containing constants is inlined and the file clang-formatted.
There are some todos in the source - Ron has volunteered to look at them.
It occurred to me that this doesn't have to be especially polished code as
it's only bridging the gap between amdgcn and atmi, so can't really be reused
by another architecture. On those grounds, it seems better to fix the remaining
todos in tree. Failing that, feedback is till appreciated.
This patch doesn't connect it to the top level cmake so it can't break the
build for other plugins. Early adopters can of course add the subdirectory
in the meantime.
What are all the reasons we need AOMP here and not the LLVM/Clang we ship this with?