Fix and improve CamelCaseFunctionNameSanitizer

**Note: This is a copy of https://github.com/cucumber/cucumber-jvm/pull/592 that I sent earlier, but from the wrong branch.**

Fixed a bug that occurred for steps with more than one capture group, for example
`Given I have "this" and "that"`
did not work because of a `StringIndexOutOfBoundsException`.
Also improved formatting for steps that have acronyms and camel/pascal case words in them.