James Patterson gives $2 million to booksellers and libraries