fix Issue 11666: Separate platform support into separate files

Another reboot of https://github.com/D-Programming-Language/druntime/pull/741 and https://github.com/D-Programming-Language/druntime/pull/731

Hopefully this one will merge.
Late response, but the idea of a fall-through default is that the generic module causes a `static assert(false)` compiler error.