ddc-core-flow: add some missing tests
ddc-core-flow: separate Vector# into Vector# and Buffer#

Some things actually need a whole vector, with length *and* data.
However, the actual kernels / tight loops that lowering generates only
require the data buffer.
I've split these out into two things, so the tight loops are only passed
the data buffer, the idea being that there's less junk around and it
won't need to dereference the pair at each iteration.
ddc-core-flow: modify salt conversion to deal with split Buffer# and Vector#