reduces number of db queries in cart validations

Queries don't work the way I thought they work, unfortunately.

This PR reduces the query count of cart#validate_items to O(1) and reduces the query count of cart#validate_dates_and_items by about half (though this is still O(n) queries, mostly due to a faulty num_available method).
oops, it isn't. I think some residual changes from the work I was doing with renewals snuck its way in here