Proposal: packed TLS for ELF

Never heard back from Walter about the dmd patch I used for Android/x86 and I know he's very careful about copyright, so I'm submitting it as a pull request.  Right now, I'm just looking to find out if some sort of packed TLS for ELF pull like this would be considered for merging and if I made any mistakes in my approach.  If so, I'll clean this pull up and figure out a way to work it into the existing build, but I don't want to do that cleanup if the basic concept is not deemed worthwhile for dmd.

I used this pull to compile druntime and phobos for Android/x86, with almost all modules' unit tests passing.  I'm not sure if this pull will work for shared libraries on Android, as I had problems in `___tls_get_addr` in druntime when I tried that, will update when I figure out what's going wrong there.

Let me know if this sort of packed TLS for ELF approach would be worth merging and I'll clean up this pull.
Oh, I remembered why I reused the `.tdata`/`.tbss`/`.tcommon` section names, it's because [those sections are already ordered by the linker scripts](https://github.com/D-Programming-Language/druntime/pull/784#discussion_r12484096) and we depend on these sections being right next to each other in druntime when we pull the TLS data.  I suppose we could prefix the names with `d_`, but I just tried it and the sections get put in different places and the resulting Android binary hangs, unless we modify the linker scripts or adjust the linker config some other way.

It's probably easiest to reuse those section names, especially since Android doesn't support the `__thread` annotation and native TLS.  I believe the kernel uses the TLS flags `SHF_TLS` and `STT_TLS` and not section names to find the TLS sections, so maybe the section names don't matter anyway.