Collect error strings instead of exception objects in collection

This highly improves behat memory footprint.
Properly handle backgrounds/scenarios and examples without titles
Ensure that SetUp and tearDown are always called. Event on --dry-run
Print steps output with pretty formatter
Fixed dry_run.feature
Refactored OnlyFirstBackgroundFiresListener by moving responsibilities up
Fixed ExerciseListener handling of pending steps
Fixed stop_on_failure.feature
Fixed invalid multiple_formats.feature
Fixed name_filters.feature
Fixed outlines.feature
Fixed parameters.feature
Fixed pretty_format.feature
Fixed profiles.feature
Fixed rerun.feature