Split API classes and interfaces

Split previous API files into many more classes and interfaces. Manager and Server APIs were left as-is.

It may be helpful to create a class hierarchy/diagram.
Technically the DSN should be able to include all connection options, but I would prefer it being a second (array) argument too.