Revert "Remove special behaviour of ENUMs inside EXTERN blocks"

This reverts commit e438f7fc725e7be3c17b8e182ad862209e96d296.

Enums have special behaviour when inside Extern blocks: Normally they
create a namespace to hold the enumconstants, but inside an Extern block,
they don't create that namespace. This means normally enumconstants won't
conflict with other global symbols or those from parallel enums, but inside
Extern blocks they behave like enums in C and are added to the toplevel
namespace, possibly conflicting with other globals.

I don't like that enums have special behaviour in Extern blocks, but
currently there's no alternative to get the C-style behaviour where
enumconstants are added to the toplevel namespace. The change has caused
problems with FB bindings to C libraries, for example here:

http://www.freebasic.net/forum/viewtopic.php?f=14&t=22147

and it's best to revert it for now.

The reason why this caused problems with code like this:
	enum
		foo = 1
	end enum
	type foo as integer
	print foo  '' error: Variable not declared, foo
is that during symbol lookup, the type "foo" shadows the enumconstant "foo"
which is imported from the enum's implicit namespace via the implicit USING
done by enums.

The same can be observed when using explicit namespaces:
	namespace aaa
		foo = 1
	end namespace
	using aaa
	type foo as integer
	print foo '' error: Variable not declared, foo

In other words, the lookup allows a type to shadow a constant, even though
types and constants/variables/procedures are usually treated as being in
separate namespaces (we can declare a type A and a variable A without
duplicate definition error). But it works like that in C++ too, and is a
whole different issue, not just related to enums...

Conflicts:
	changelog.txt