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.
Write options are no longer specified here, since they're provided when the WriteBatch is constructed. That may be a problem if we need to implement an API where write options can be provided after a batch is ready to go, so I can revert to what we had earlier if necessary.