C Macro translations in druntime have been translated to templates

This prevents linking errors when using `-betterC`.
For example:

---
import core.sys.posix.stdlib;
import core.sys.posix.unistd;

extern(C) int main()
{
    int status, pid = vfork();
    if (pid == 0)
    {
        // ...
        return 0;
    }

    waitpid(pid, &status, 0);
    if (WIFEXITED(status))
    {
        // ...
    }
    return 0;
}
---

This would fail to compile with the `-betterC` flag:

---
$(CONSOLE
Error: undefined reference to `core.sys.posix.sys.wait.WIFEXITED(int)`
       referenced from `main`
)
---

The reason is that `WIFEXITED` is a C macro that was translated to a D function in druntime, which requires linking with druntime to use.
Now that it's a template, it will be lazily instantiated and the program compiles.
