[WIP] Restructure library

To understand what has been done, it is best to simply read the last commit message which should give an overview of the architecture. Eventually I will document every file in this project and maybe even write a diagram that can be used as a guide for other implementations.