Allow the Index model to index arbitary items
Refactored search by breaking the weight and pagination sections into separate functions
Restructure class structure to have as much of the logic inside AbstractIndex as possible.
Separate AbstractIndex into its own model file, so that AbstractIndex can be used without creating signals for Index.