Add default feature path, default glue and default formatter once

The RuntimeOptionsFactory should add default feature path, default glue
paht and default formatter once, not once per inheritance level.
Remove the unique glue work around from TestNGCucumberRunner
Add fireTestStarted/Finished for undefined/pending steps in strict mode

The JUnitReporter should for each call to Result either call
fireTestIgnored, or call fireTestStarted and fireTestFinished on the
step notifier. In strict mode undefined and pending steps should be
treated as failed steps, so fireTestStarted and fireTestFinished should
be called on the step notifier.
Correct JUnit notification for background steps

The background steps are copied in the ExecutionUnitRunner for each
scenario in a feature with background. This is done to make them unique
for each scenario, so that the JUnit notification later will not be
ambiguous. When the background steps are executed, it is the original
ones that are executed. Therefore the background steps need to be
'converted' from the original steps to the copies made earlier, when
performing the actual JUnit notifications for an execution unit
(scenario).
Add new hooks for global level (@BeforeAll and @AfterAll) that run only once before all and after all existing features/scenarios. Unit test and cucumber test to cover the new hooks and the running order between hooks.
An execution flow with the new hooks looks like this:
1 - @BeforeAll hook(s) (runs before all features once)
2 - @Before hook(s) (no change, same behavior - before every scenario or tagged scenarios)
3 - @After hook(s) (no change, same behavior - after every scenario or tagged scenarios)
4 - .... 2 and 3 for all scenarios in a feature
5 - @AfterAll hook(s) (runs once after all the features are run)

As test for the new hooks see/run:

cucumber.runtime.java.hooks.RunWithAllHooksTest
cucumber.runtime.java.hooks.HooksStepDefs
test\resources\cucumber\runtime\java\hooks\feature-1.feature
test\resources\cucumber\runtime\java\hooks\feature-2.feature
Added junit tests and cucumber tests for new code
Add new hooks for global level (@BeforeAll and @AfterAll) that run only once before all and after all existing features/scenarios. Unit test and cucumber test to cover the new hooks and the running order between hooks.
An execution flow with the new hooks looks like this:
1 - @BeforeAll hook(s) (runs before all features once)
2 - @Before hook(s) (no change, same behavior - before every scenario or tagged scenarios)
3 - @After hook(s) (no change, same behavior - after every scenario or tagged scenarios)
4 - .... 2 and 3 for all scenarios in a feature
5 - @AfterAll hook(s) (runs once after all the features are run)

As test for the new hooks see/run:

cucumber.runtime.java.hooks.RunWithAllHooksTest
cucumber.runtime.java.hooks.HooksStepDefs
test\resources\cucumber\runtime\java\hooks\feature-1.feature
test\resources\cucumber\runtime\java\hooks\feature-2.feature
Added junit tests and cucumber tests for new code
Add new hooks for global level (@BeforeAll and @AfterAll) that run only once before all and after all existing features/scenarios. Unit test and cucumber test to cover the new hooks and the running order between hooks.
An execution flow with the new hooks looks like this:
1 - @BeforeAll hook(s) (runs before all features once)
2 - @Before hook(s) (no change, same behavior - before every scenario or tagged scenarios)
3 - @After hook(s) (no change, same behavior - after every scenario or tagged scenarios)
4 - .... 2 and 3 for all scenarios in a feature
5 - @AfterAll hook(s) (runs once after all the features are run)

As test for the new hooks see/run:

cucumber.runtime.java.hooks.RunWithAllHooksTest
cucumber.runtime.java.hooks.HooksStepDefs
test\resources\cucumber\runtime\java\hooks\feature-1.feature
test\resources\cucumber\runtime\java\hooks\feature-2.feature
Added junit tests and cucumber tests for new code
Add javadoc
As per Aslak's comments
Update clojure version to 1.6.0
Only include executed scenarios and steps in the JSON output

Do not include the Scenario Outline and Examples given as information
before the execution of the instantiated scenarios from the outline.
This unified the JSON output from Cucumber-JVM regardless of the feature
is executed by the command line runner, the JUnit runner of the TestNG
runner. The JUnit runner differs from the other by not sending the
Scenario Outline and Examples as information to the formatters before
executing the instantiated scenarios from the outline, so this commit
only affects the output from the command line runner and the TestNG
runner.
JUnitFormatter: use ascending numbering of outline scenarios

Currently the JUnitFormatter use descending numbering in the names of
the instantiated scenarios from scenario outlines, which seems a little
unnatural. Because the JUnitFormatter relies on calls to the examples
method to determine the number of instantiated scenarios, the numbering
is not applied at all when using the JUnit runner. Change the
JUnitFormatter to use ascending numbering, and make it work also with
the JUnit runner.
Groovy-Cucumber: support multiple World's
Expose Scenario id to step definitions

Extend the Scenario interface with the method getId(). Then it is
avialable to step definition through the Scenario argument to hooks.
The scenario id is esentially <feature name>;<scenario name> or
<feature name>;<outline name>;<example group name>;<example row number>.
Let the TestNG runner handle strict mode correctly

In strict mode pending or undefined steps should make the TestNG runner
fail. Also remove the duplicate printing of the summary.
729 Test fails : HTMLFormatterTest#writes_valid_report_js
Merge pull request #730 from yoelb/fix_local_test

729 Test fails : HTMLFormatterTest#writes_valid_report_js
Disregard order of JSON properties in PrettyPrint unit tests
Attribution for #740
Merge branch 'testng-handle-strict-mode' of https://github.com/brasmusson/cucumber-jvm