Register looked-up adapters/accessors in their own right

DataAccessor and InstanceAdapter classes are looked up for derived types
by inspecting the type's ancestors and searching for registered adapters
up the chain.

When loading a large number of facets this causes the lookup to be
invoked many times with the same arguments. By registering the located
adapter or accessor with the derived type, this is avoided for all calls
but the first.
Test that adapters found by ancestor lookup are registered.
Test adapter/accessor memoization using state checks
Clearer method naming in adapter lookup
Search all ancestors in adapter lookup
Merge pull request #322 from urbanautomaton/register-looked-up-adapters

Register looked-up adapters/accessors for later access