Split into many libs

* Splits everything into many libs, drastically improving incremental compilation times.
* Compatibility fixes, runs with newest version of compiler and libs.