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({})
__getattr__ is not __getitem__. If an attribute is not found, it shall raise an AttributeError, not a KeyError.