Improve LongGene, StringGene, BooleanGene, ArrayGene and JSONObjectGene to take into account the values in the specification (e.g. max, min value, regex expression) where possible
LongGene mutation now makes it possible to go outside the specified boundaries (min/max value)
JSONObjectGene mutation now allows for the deletion of specified required keys
ArrayGene mutation can add or remove a child beyond the specified length of the array
StringGene mutation now allows to change the string to another specified enum option rather than only mutating one character in the string value. In principle it is possible to deviate from the specified regex expression but this is probably unlikely for large strings.
Long values to be mutated have a chance to be mutated to a boundary case (min/max)
Regex can be mutated but NOT without issues. Even when not considering the special Regex expressions, things can go wrong. For example: the case where non-special characters are deleted which leads to an invalid regex expression, or the case where numbers changed to other numbers leads to impossible min/max bounds (in a regex range), which then leads to the regex library crashing since no string can be generated from the Regex. Currently it is only possible to mutate one alphabetic character into another one. This seems to not cause any issues.
A fraction (currently 20%) of the String value will be mutated (per position to be changed there is either a change of character, an additional character or a character removed)
Following the meeting on the 8th of March: