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.
Added support for empty arrays in restrictions.

This allows your timid code to go from looking like this
  with(:my_field, some_values) if some_values.present?
to become confident code like this
  with(:my_field, some_values)
Test adapter/accessor memoization using state checks
Clearer method naming in adapter lookup
Search all ancestors in adapter lookup
Made empty array trigger a query equivalent to a no-op. Added documentation about the behaviour.
Merge pull request #334 from culturecode/empty-array-support

Added support for empty arrays in restrictions.
Update README.md

Fixed cut and paste error that was merged before it was fixed.
Merge pull request #322 from urbanautomaton/register-looked-up-adapters

Register looked-up adapters/accessors for later access
Merge branch 'master' into solr4
Merge branch 'master' into solr4