Prevent inifite loop when a callbacks is the last step to be executed.

Fix's an error in my logic. Now instead of having a null step ID mean
that it is the first step. The step ID gets initialized when the
form is first build and NULL is changed to mean that all steps
have been executed.

Also added some comments.
Undo previous form when callbacks steps exist between it and the current step.

Added two functions for navigating by 'form' steps rather than steps.
Coding standards.
Missing Argument
Merge pull request #319 from nigelgbanks/7.x-fix-nigels-cockup

Prevent inifite loop when a callbacks is the last step to be executed.