Minor fixes

- Fixed a regression in `datalist.teardown()` that would halt the op
- Added a minor optimization to `datalist.refresh()` to avoid ops that would result in nothing
- Fixed `data.batch()` to always refresh a datalist