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({})
This is at the price of an important performance penalty, as dict.__getitem__ is native.