C++ namespaces patch (2)

Hi,

This patch is a bit different approach from the previous one.
There's a 'NamespaceScope' Scope type which is not transiently live, I mean the parser doesn't delete it when
the scope is exited, but it keeps it and re-enters it when there's an extended namespace definition, like

namespace A { int x; }
namespace A { int y; } // extended

I also removed the Scope references from the AST decls.

namespaces2.patch (42.7 KB)