[DDMD] Always create libs through named factory functions

@WalterBright I'm manually porting `lib*` and it does seem to work, but there are two downsides:
- It's hella tedious
- Now I'm going to have to manually port every change anyone makes to the C++ source

So please avoid any non-critical work on those files until after the D port.