This idea was copied from Epoxy. :wave: Bright idea guys!
Find the model that has the given view type so we can create a viewholder for that model.
To make this efficient, we rely on the RecyclerView implementation detail that
GroupAdapter#getItemViewType(int) is called immediately before
GroupAdapter#onCreateViewHolder(android.view.ViewGroup,int). We cache the last model
that had its view type looked up, and unless that implementation changes we expect to have a
very fast lookup for the correct model.
To be safe, we fallback to searching through all models for a view type match. This is slow and
shouldn't be needed, but is a guard against RecyclerView behavior changing.