Use generic UnitType and Ability classes for data.

The dynamically created classes don't play well with pickle and
were unncessarily complex. The only change here is that you can't
use this anymore.

  unit._type_class.__class__.__name__

Instead you can use the shorter:

  unit._type_class.name

No problem.
datapacks is a better word than builds here.
Replace all references to gateway with region.
Fix typo.
Use a regular dict for raw data results.
Remove stray reference.
Misc import and documentation improvements.
Don't forget the tests.
Our readers and lambdas can't be pickled.

Remove registered readers/datapacks on picking. We won't need them
anymore, the replay should already be loaded.