Typecheck hierarchy and common tests.
Summary: First: I apologize. It's not possible to typecheck these tests without rearchitecting them (it was only possible with the saved state tests because I was dealing with concrete classes, not classes intended to be used as mix-ins), and rearchitecting them involves rearchitecting everything that uses them, so this change ended up being gigantic and I don't think there's actually a way to even split it up, other than having one diff for rearchitecting and one for adding type annotations, but adding the type annotations was vital for doing the rearchitecting successfully, so here we are.
Reviewed By: arxanas
Differential Revision:
D16156292
fbshipit-source-id:
38d7bda557a2815907de8bdb6bc5c38bbbb29da3