Centralize the PyType code into a new typeobject.cpp
Move some things out of runtime/capi.cpp into capi/ (NFC)

Move some type-related stuff into typeobject.cpp or descrobject.cpp
Start moving towards the way CPython implements slots + wrappers

- Start moving towards slotdefs
- add tp_repr support
- add an slots_tester extension module so we can test these more narrowly
Merge branch 'master' into typeready
Consolidate slot info into a slotdefs array

Previously had hardcoded three different iterations.
Test + start supporting the opposite direction (CAPI->Python) as well
Merge branch 'typeready'