Extract assertions methods in its own module

This allow for cleaner syntax and it now extend the native assert module
in order to be a dropin replacement for `assert` for generators author.

Also added test and refactor assert.implement to be more reliable.