Make ATContext arg to ObjCNamespaceDecl constructor const.
Add a new identifier namespace for ObjC namespaces.
Add ObjC namespaces to AST visitor.
Make ObjCNamespaceDecl redeclarable.

To do this, ObjCNamespaceDecl is now a subclass of Redeclarable<T>. But it apparently needs to re-expose the members defined by Redeclarable<T> as its own.

Also, this involves a lot of copy-paste I'm not happy with, both from NamespaceDecl's implementation and within DeclContext::collectAllContexts().
Add a missing semicolon.

Without this semicolon, the (macro-expanded) definition of TraverseObjCNamespaceDecl gets transformed into a declaration, and clang warns that the method has been declared and has internal linkage, but is never defined.
Implement namespace redeclaration iteration.

Iteration of redeclarations involves, in part, three methods, which by default do no iteration since most declarations aren't redeclarable:
- DeclBase::getNextRedeclaration() is a virtual method.
- DeclBase::get{Previous,MostRecent}Decl are non-virtual, but call through to virtual ...impl methods.

ObjCNamespaceDecl implements these three methods to either call into the related methods from the Redeclarable<ObjCNamespaceDecl> base class, or to reach into the base class's RedeclLink member.

ObjCNamespaceDecl also exposes the rest of the iteration interface by using its Redeclarable<> base class.