Allow forward refs if undefined in enclosing scope.

The limitation allows references to objects defined in the enclosing scope
(such as "property") to be used without triggering the creation of an enum
member.  However, the implementation relies on sys._getframe.
Forward references require explicit declaration.

Add a "declaration" keyword argument to allow the following:

class E(Enum, declaration=...):
    B = ...
    A = {B}
    B = {A}

Now there is no need for sys._getframe tricks and guessing whether a
name is a global or a member anymore.