What is the difference between the PUT, PATCH, and POST HTTP methods? Provide examples of when to use each.