Use broadcast_to to minimize memory for empty placeholder in saving (closes #77)
This avoids the excessive memory requirements described in #77 (closed) by exploiting numpy views. Instead of allocating and zeroing a memory block equivalent to the final result, we now only use one timestep of the final result, creating the larger block only as a view into this much smaller allocation.