Use array.reverse() instead of custom reverseAxis function.

This was brought up as a potentially better method in pull
request #307.
Fix issues in line optimization.

I've moved back to the old Box::Move function and instead have put
the line optimization steps before we move the box for the first
time. This makes more sense to me as:

1. We only perform this operatrion once, right before we move the
box for the first time.
2. Putting it in the Box::Move function kind of ruins the abstraction
of it since it has to know that the box is moving in 'steps' and not
at an arbitrary amount to move.
3. It allows us to deal with negative line numbers easily. We optimize
the amount to move before we add the extra lenght/width of the box
to the position for negative line numbers. This was messing up the
previous algorithm since it wasn't taking into account this extra
amount added.

I've also fixed an incorrect comment left over from a previous
commit that was discovered by review happening in Gecko bug 974017.