Use custom types for all types

This pull is huge - sorry :-D

All handling of types is now handled by custom types.

The message of error is now also included in the comparison.

I tested the new version against assertgraph, unexpected-knockout, and the webmail.