Make AbstractRemoteDataSource easier to use (#13334)

- Adds a callback to requestRows so implementors know what to do when
receiving data
- Guestimate the initial amount of available rows so an initial request
can be made before the actual size is known

Change-Id: Iba44eab1695e3ff9947a4e7ed16eee55af98fec4