What is the difference between a DataTable and a DataReader?