Depends on D85068.
The existing folder structure was not great and was using relative includes
for headers in C++ files, which I'm not fond of. I've split the code into two
main groups: Core and API. This will help us have a clear separation between
the public and private code.
Besides, I've updated the CMakeFile accordingly.