Fix for incorrect row removal with function

When more than one row was removed, sometimes the wrong row would be removed due to the direction of removal (first to last rather than last to first).

This is related to #210, but that solution involved reversing the array of rows to remove, which doesn't seem very performant. This solution `unshift`s the row indices so they're in the right order to begin with. I wrote a similar corresponding test which fails without this fix.