Fork API types.

All tests pass (for now...)  Rebasing this PR is a _pain_
Personally I find the massive golang stack dumps to be not particularly helpful when debugging a test vs. a focused message.  But I don't super care.  I've added the timeout to the test script, since that's a good idea anyway.  If you feel strongly I'll revert this part of the change.