Update error message functions

Update `_already_reserved_message()` and `_already_out_message()` to produce
*much* more detailed and informative error message. Create `_infinity_if_none()`
helper function for the above.
Improve lend conflict detection functions

Functions `_find_reservation_conflicts()` and `find_lend_conflicts()` have been
significantly improved. Both are now able to handle a value of None for their
`start` argument, the logic itself is clearer, and comments are much improved.
Use updated functions

Recent commits have significantly improved the functions for:
* detecting lending conflicts
* telling the user about lending conflicts

Use those updated functions. Also significantly rework the code which calls
those functions.