Not operators, improved conversion to bool

- Support for "!" oeprator
- Correct implementation of "not" unary expression (same with "-not" and "!"), uses evaluation and conversion to bool and can therefore be handle much more language expressions
- Improved conversion to bool, separated specific conversion tests from general one, made sure the specific conversion tests cover the language spec.