Fix ordered tests #2 (use NULL)

This fixes

- Crashes in ORDERED_TEST (#337) 
- Lost test cases in ORDERED_TEST (#338) 

1. NullTestShell removed completely.
2. Flawed conditionals corrected.
3. Ordered test at head inserted properly
4. List is terminated by zero pointer
5. Static member is missing-initialization-resistant

Isn't the error rather that it should be

    return (!test || (!test->getNext()) || (test.getNext() && test->getGroup() != test->getNext()->getGroup()));

test should be guaranteed not to be 0 at this point -- but test->getNext() might be 0.