Split API classes and interfaces

These factory methods may not even be necessary, as the userland layer can simply interpret the command response and construct the cursors outright.