Block use of math.e to avoid confusion

In some contexts the 'e' symbol from the Python math module was visible,
which could cause confusion with the E register. It seems safer to avoid
its use altogether.
Outer parentheses now implies indirection

Parentheses are used for both indirection and to force precedence in
expressions. The acceptance depended on context, which was confusing.
LD B,(0) was not allowed due to indirection, but CP (0) was allowed
as a numeric expression.

The cases allowing expression use now treat outer parentheses as
indirection, and fail with a suitable error. In all cases the usual
work-around of 0+(expr) can stil be used.
Removed EX HL,DE as alternative for EX DE,HL

Let beginners learn the correct syntax from the start ;)
Improved test suite for valid and invalid instructions

The valid set contains all valid (+undocumented) instructions.
The invalid set contains many invalid operand combinations.