[docs] Add Sphinx-based documentation (not built by default)

Initial work on documenting the module and also added some comments (in the documentation) how we should probably sanitize the API as starting point for discussion.
Yes, interface is unavailable sadly and I'm drawing a blank on non-abbreviation alternatives that are appropriate to both Interface and Adaptor.  'implements' would probably work for Adaptor but less so for Interface.