fix for compatibility with getattr() buildin method

- fix for compatibility with getattr() buildin method. When an invalid key is requested, it now raises a AttributeError instead of a KeyError.
- allow initialization without arg: Namespace() is equivalent to Namespace({})
Github replaced my double-underscores... I wrote:

  dunder getattr is not dunder getitem. If an attribute is not found, it shall raise an AttributeError, not a KeyError.

The getattr built-in function will catch the AttributeError and let propagate other exceptions.