remove various unsafe operations

When you're doing this much I/O, bounds checking and array assignment are completely trivial overhead, so having `@inbounds` annotations, direct calls to `arrayset`, and `unsafe_copy!` calls are not necessary. In general, you shouldn't use any of these these unless you've determined using profiling that something is actually a hotspot *and* you can prove from the surrounding context that they cannot be incorrect unless something crazy happens. "Crazy" does not include the caller giving you incorrect bounds; crazy is more like the size of an array being changed out from under you in a simple loop – that is reasonable to assume won't happen.