What is the difference between TCP and UDP, and in what scenarios would you choose one over the other?