Improved context handling

gpf.context is now a way to resolve symbols (for instance,
gpf.context("gpf.attributes.Attribute") will return
gpf.attributes.Attribute

Changed the preprocessor conditions to fit the reality (and associate
and empty ASSERT)
Introducing gpf.define to define class
First use of gpf.define (and debugging)

Now classes have function name (will simplify debugging)