Fixed traversing bugs and made more effecient

I fixed some bugs where the number of steps are wrong unless I do a
dodgy hack like steps-1 or steps+1. I restructured the recursive
definition to minimize operations and reduce repetitive code. Not all
repetitive code is taken care of, but the obvious ones I can think of in
a flash.

The algorithm checks if the traversing hits the edges of the grid. If
so, it stops.

The animateGrid function returns the current spot the zombie is at.

The zombie object will store its health, position and view (either left,
front or right). The views will be table cells based on rows/columns.