Apparently dynamic linking with C++ had been broken for a while now. Sorry about that.
Separated backends into their own files.
Some cleanups.