Explicit raising of assertion errors

From docs:

    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 tastly 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
Merge pull request #28 from 9seconds/assertions

Explicit raising of assertion errors