delete!(dict,key) returns dict[key] or errors if key is missing.

delete!(dict,key,default) return default if key isn't in dict. The
API is a little weird for non-associative containers where there is
no value to return, but this takes a crack at it. I think the
default version doesn't really make sense.