Initial effort on pulling Agents into gems

Thanks to @mustardhamsters for pairing on this, and @dsander for talking it through.  What do you guys think of this basic approach?  And how do we test external gems?