Add Reservation to Rentr

* Users can create reservation dates
* Users can not create invalid reservation date ranges
* Users can view their reservations for a particular listing
* Users can view all of their reservations
* Users can view all their reservations for a listing if any exist
* Guests can still use app
To make this criticism more explicit, I propose replacing the contents of this method with:
```ruby
if available_during?(date_range)
  book(user, date_range)
else
  NullReservation.new
end
```