Classes

Class PageSearch is an example of how you could search for pages using the SearchableModelTrait
Class Pagination is used so we can paginate search results from many different searched models
Class SearchableModelTrait can be applied to an eloquent model to give it "searchablity". You have to override the getColumns method and/or make a protected $searchable = array('column1' => 1, 'column2' => 2);
Class UniversalSearch lets us register new searchable models and then search through all of them
Class DeviseUniversalSearchProvider registers the universal searching mechanism for Devise