progress towards partial-row reads on passnum>0

line.split is eating cpu, so do less of it

update rowU_tell[] upon fd_out.write
put whole inner(file) loop inside "if passnum == 0"
colU[] index slides
replace slow colsU.pop(0) with faster line[skip:]
switch (except first row, first pass) to DIY splitn

nb.
# XXX: here we used to check actual #colsU matched expected (check matrix not ragged)
# now we only discover where lines are short

it's 50% slower (1 sample, big file in 6 passes)
  but doing less work on each pass after 1st
  so probably amenable to rewrite of splitn in C?

also would be worth
  purging over-budget columns sooner (speedup seen at passnum===0 25%)
  replace readline?  we're scanning each byte twice
Merge remote-tracking branch 'remotes/peeplet/feature/profile' into dev

* remotes/peeplet/feature/profile:
  switch (except first row, first pass) to DIY splitn
  replace slow colsU.pop(0) with faster line[skip:]
  progress towards partial-row reads on passnum>0