Base cleanup

base.py wants love too! This brings its coverage to 100%, fixes bugs in DecimalType error messages for Python 2.6 and IPv4 validation, and fixes some `pytest.raises: something1(); something2()` blocks where the second test was never actually executed.

This patch by itself would bring project coverage to 86% (for those watching #203).

And with this, I'm going home for the night. Cheers!