Java JSONFormatter should record before hooks in next scenario

Cucumber-JVM will call before hooks before scenario() (or background())
is called, therefore the Java JSONFormatter should record the before hooks
in the scenario to be executed next, instead of scenario for which
sceanrio() was called latest.
Let the Java JSONFormatter record before hooks in next scenario

To work with Cucumber-JVM, let the Java JSONFormatter record before
hooks in the scenario for which scenario() is called next.
Cucumber-JVM calls before hooks before scenario() (or background()) is
called on the JSONFormatter, Cucumber-Ruby calls before hooks after
scenario() (or background()) is called on the JSONFormatter. The JSON
parser spec need to be relaxed to work with both the Ruby JSONFormatter
and the Java JSONFormatter.
Remove redundant alias for Greek
Merge branch 'json-formatter-before-hooks' of github.com:brasmusson/gherkin
Attribution
fixed encoding issues in js-gherkin

See https://github.com/cucumber/gherkin/issues/225
clean up for submission

- use indentation style of surrounding code
- avoid unnecessary whitespace changes
- more comments
- add names to LICENCE file
fixed indenting + error handling

- Fixed indention in js/test/test.de.js
- throw Errors instead of strings.
extract method for utf8 decoding/encoding

I moved the code for utf8 decoding/encoding to
separate methods, since it is at another level of
abstraction than stringToBytes and bytesToString.
agree on credits living in History.md; small whitespace nitpicks
added .idea folder to .gitignore
bumped java gherkin version to 2.12.2-SNAPSHOT
added new life cycle methods to the Formatter interface and stubs to existing implementations
Durations are Longs not longs as they are optional

The model already treats the Duration as a Long but the parser insitst its a long causing Longs to be unboxed and then re-boxed.
if the duration is missing (as the result is skipped) then this causes a null pointer exception trying to parse the json.
extended tests to emulate new intended order of execution
Ensure PrettyFormatter outputs whole lines and flushed in between
Remove extra space before Example
Expose ID so that tools can diferentiate between runs of scenario examples.

Change-Id: If6b43c9a11eb6078b1094001f472f768e3e7d682
#265: fixed couple ruby 2.0 warnings
Update dependencies