Refactor chunks to use compute_down

Rename `compute_one` to `compute_up`

When computing on chunks we want to push as much computation into a single in-memory operation as possible.  Old chunks used compute_up, continuously creating new `ChunkIterator`s.  This refactoring uses `compute_down` and calls a `compute(full_expr, ...)` on each chunk.  This should both improve performance and be much more amenable to multiprocessing.