cocktail shaker sort

A bi-directional bubble sort. Passes alternate
between ascending through array indexes, pushing the largest
item to the bottom; and descending through array indexes,
pushing the smallest item to the top.