Fix various issues with complex numbers

* complex number and numpy_binary_op did not play well together
* conj and conjugate where not available as methods
* more validation
* move conjugate to __dispatch__
Relax constraints on methods unicity

They are not viable in case of explicit method calls.
As a side effect, test all dispatched method calls both as explicit call
or method calls.
Suppress __classname__ horror

Classes are now proper and regular members of their parent module, no
need for the __classname__ trick horror.

Many ugly hooks are suppressed here and there thanks to this cleanup.

Huge thanks to Pierrick for his preparatory work!