[core] Stream CSV download and limit XLS download

CSV download can be streamed because that format can be contatenated easily.
Tablib XLS has a max size of 65000 rows, so it must be limited.
Also added a "starting yield" so that downloads start early rather than later.