inchain

Hi everyone,

When I was going through documentation yesterday, I realized that testing hard-coded parent-child relationships (e.g., R-I-F) was clunky at best. This PR adds a generic Agent API addition that tests whether one agent is in the parent chain of another agent (i.e., if one node exists higher in the parent-child DAG than another). It also adds some testing infrastructure to support generic agent testing.

I'm not wedded to the name `InChain`, primarily because it does not indicate the chain direction being tested. I'd welcome other suggestions if anyone has an opinion.