Implement most of test_executor_single_thread_without_test_part_validation::run.

Only handling test failures remains there, and is being deferred as it
requires a custom exception to be implemented first.  A single unit test
is included with more to added when the implementation is completed.

Change test parts run function to be const.

Test part registry add signature changed to take a pointer rather than a
reference.
Add some missing external header guard checks.