The isNegatibleForFree/getNegatedExpression methods currently rely on a raw char value to indicate whether a negation is beneficial or not.
This patch replaces the char return value with an NegatibleKind enum to more clearly demonstrate what is implied.
It also renames isNegatibleForFree to getNegatibleKind to more accurately reflect whats going on.
name - isNegatibleForFree - hints that that this function probably returns bool.
Maybe we should rename it too - what do you think?
getNegatibleKind?