model each adapter

This adds adapter modeling and stubs out handling.  Now, Ardb tracks
a current adapter (based on the config) and the adapter will contain
all of the behavior specific to it.

The motivation here is to reduce duplication and to centralize the
behavior that is most likely to change over time.

In future PRs, I'll switch each piece to using the adapters.

@jcredding ready for review.  Just a bunch of setup here, but I wanted to do this separately to not junk up the subsequent PRs where I switch the behavior.