Make the step counter outside the runStep

Having the step counter outside the runStep would give more
flexibility in running steps
Terminate test if any step fail

Previously only the result of the last step would determine if the
test case passed or failed. This change will add check to check
assertions after each step. This is still very limited because it
mandates that the ending of each step should be assertions, and
assertions before the last step wont matter!