Disallow gap sizes <= 0
more succinct implementation of .length
move data in reverse order when moving gap to prevent clobbering
more tests!