replaces (non working) nonzero with empty

`__nonzero__` didn't work, now works using a simple `empty` method; I've changed the places where the `bool` comparison was used.
@RainCT In Python2 we can use `__nonzero__`, in Python3 it's `__bool__`, but anyway, that code was returning `True` when the `errors` list was empty, so there was a bug. Maybe you might know why :)