Exception system simplified
Added some docstrings
Added updating system
Improved exposed methods
Added many unittests
Allow for easier extension by inheriting instead of injecting into __init__
Added alternative constructor
Used a different __contains__ approach that actually formats the key
Used bytes instead of str to support py3k