Improve Catalog

* Reduces number of queries needed to calculate the available items (cart date changes now lie in the 800-900 ms range)
* Only refreshes the catalog listings page and not the paginating code, resolving #531 
* Refactor pagination code to make it more readable

Will this print the category name even if equipment_models.nil? == true? Or is this just an extra failsafe? The category should not be listed on the catalogue if it has no equipment models to list, imo.