Explicit raising of assertion errors

From [docs](http://docs.python.org/2/tutorial/modules.html#compiled-python-files):

    When the Python interpreter is invoked with the -O flag, optimized code is
    generated and stored in .pyo files. The optimizer currently doesn’t help
    much; it only removes assert statements. When -O is used, all bytecode is
    optimized; .pyc files are ignored and .py files are compiled to optimized
    bytecode.

Of course nowadays it is useless but there is no any guarantee that
cPython/PyPy will add something tasty to such flag or change behaviour.

I concern about usage of `assert` instructions within the library: simple `-O`
flag can break some logic and invalidate whole library. So this commit
simply put some explicit assertion verification