Essentially this duplicates the interface that IGListKit uses from UICollectionView and makes it a protocol. Many of the methods are pretty generic; however, a few are pretty specific to UICollectionView and the various objects it uses like UICollectionViewCell and UICollectionReusableView. These have been converted to a `__kindof UIView` for the time being.