[_cffi_backend] Improve CField, CType, _CDataBase, buffer by mildsunrise · Pull Request #15530 · python/typeshed

these were verified against implementation code. the docs are not very precise on some of these things, but I think it's clear all this is intended to be public facing API. CType in particular will be documented better as part of python-cffi/cffi#231.

draft because I still need to resolve the style issues (so far I can only see (1) replacing Optional with | None, and (2) importing Self from _typing_extensions).

I also need to see if Python/typeshed allows structural typing (because available CType fields vary depending on the value of kind)