Move stuff around, handle null cleanly

Hey Adam, I pulled down your changes and changed a bit if the naming to try to get some consistency and clarity. I also removed the `if (models)` check in `reset` so (a) the tests wouldn't have to change and (b) people have the option to do something with a `null` response in `parse` if that's what they want, especially since `update` would run `parse` either way. I think moving all of this logic to `update` makes the most sense, but we'll see what others think in the main PR.