Build item-item build context with a provider
Implement sparse item-item neighbor iterator
Make sparse neighbor iteration adaptive
Refactor neighbor iteration into a strategy

This makes neighbor selection for the default item-item model
builder a strategy with sparse and non-sparse implementations.