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
`start_date` and `end_date` should be actual `Date` objects. Then you don't need to deal with all this "DateRanges can be invalid" nonsense. The `DateRange` class shouldn't have to worry about string parsing, y'know?