Don't unnecessarily copy the key list

`__iter__, has_key, __contains__, clear, & len` all copy the `__keys` list but don't need to. 

Minor backward compatibility change: make `__iter__` generate a runtime error if the user attempts to destructively modify the `SON` during iteration just as `dict` does and have the others directly use the internal list.

>>> od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
>>> for key in od:
...     print key
...     del od[key]
... 
a
b
c
>>> od
OrderedDict()
>>> for key in od:
...     print key
... 
>>> 

>>> from bson.son import SON
>>> s = SON([('a', 1), ('b', 2), ('c', 3)])
>>> for key in s:
...     print key
...     del s[key]
... 
a
b
c
>>> s
SON([])
>>> for key in s:
...     print key
...