Pure-inline function checking iterates all decls
Correct handling of later-non-purified inline functions
tools/debug_scope doesn't print unscoped lines
Correctly handle static-redefinition
Correctly emit decls with the right linkage
Correct handling of static/non-static variable redefinition
Distinguish between different variables in different scopes
Prototype decls link to their implementation (for forward-inlining)

Cherry-picked from f94f6161243f009326c2a1cf525d0ee5c09b114f.
Needed for inline function definition checks, e.g.

inline int f(){ ... }
extern int f(); // causes f to be emitted
Correctly handle 'extern f()' after 'f' is declared inline
Redefinition type checks use type_cmp(), not decl_cmp()
Merge branch 'fix/static-propagation'
Merge branch 'master' into feature/inline

This brings in the static redefinition and inline decl checking fixes

Conflicts:
	src/cc1/decl.c
	src/cc1/decl.h
	src/cc1/gen_asm.c
	src/cc1/out/dbg.c
	test2/inline/pure.c
Inlining attempts to see through late-prototypes
Fix scope emitting for inlined-function tags

Previously if an inline function had its DW_TAG_subprogram generated,
then the inline function itself was lated code-gen'd, the later
code-gen wouldn't have the correct dwarf-scope (of the subprogram
tag), which meant any DW_TAG_variables or anything else that would've
normally gone on the tag, were lost.

This meant debugging extern-inline/non-inlined inline functions
didn't work.