Updated the List recursive code so it worked when its index had become
out of order due to previous insert and deletes. Then some refactoring
and unit test tidying