Fix copy in message notification about recipients

Template said “sent you a message” even when you were not the only or
even the primary recipient of the message. This confused multiple users.
Fixed the template to specify all recipients of the message.
Improve tests for User#can_request?

I was afraid there was a bug that would prevent users from making a new
request if they had a canceled one. Wrote these tests and found that the
bug did *not* exist. Keeping these tests because they're clearer than
the old ones (and I'm trying to migrate everything to factories anyway).
Bit of cleanup related to request actions

* Explicitly return false from Actions#available?
* Add an any? method to Actions and use it to decide whether to show the
  actions sidebar on the request detail page
Add a reopen action to canceled requests

Students can reopen a canceled request if they have no open requests
(that is, under the same conditions in which they can make a new
request).
Show open_at dates, not created_at, on donate page

If a request gets put back on the list, we want it to have a fresh
chance. That includes not looking stale to donors, who don't necessarily
understand why the list is ordered the way it is.
Refactor request detail page tests

Request detail tests were getting completely unmanageable. This
refactors them in a few ways:

* Uses factories instead of fixtures
* All tests for request actions (links in left sidebar) are in a
  separate RequestActionsTest
* Each test basically tests only one thing

Downside: The tests are slow. 200-250ms per test, and there are 63 tests
of the request actions alone. May need a different strategy at some
point.
Silence database notices in test
Separate out reopen action into renew + uncancel

* Canceled requests can be uncanceled.
* Old requests (open fore more than 1 month) can be renewed if the user
  confirms their shipping info. This puts them back at the top of the
  list.
* Old, canceled requests are automatically renewed when they are
  uncanceled.
Render renew events in admin event log
Add a RenewRequest reminder for old open requests

This goes to students whose requests have been open for more than a
month, and encourages them to renew the requests (or cancel if they
don't want the book anymore). It also warns them that the request will
be autocanceled if not renewed.
Change some time intervals from months to days

Time intervals like 1.month in Rails are tricky because not all months
are the same. E.g.:

    now = Time.now.utc
    monthago = now - 1.month
    now - monthago == 1.month  # <-- might not be true

Days are all the same (or at least the discrepancies--leap seconds,
perhaps?--are much smaller and much more rare), so we stick with time
intervals in days instead, like 30.days instead of 1.month.