Mirror Python's exception hierarchy, add overlays and typing