Allow == and != as long as the signatures match. Fixes GH #4.

Comparison is done by pointer, and a new failing test has been added.
Additionally, failures in binary ops will now print the full type, instead of
just the class.

This means that [1] == [1] will return 0 because both are created as two
different lists.