Implements properly GroovyObject in Hibernate proxies and also contains other Grails Hibernate performance optimizations

Implements properly GroovyObject in Hibernate proxies and also contains other Grails Hibernate performance optimizations.

Previously the metaclass of the Hibernate proxy and the actual class got easily mixed up. This change fixes the original problem. 

handleLazyProxy always initialized any lazy proxies at access time. This hack has been removed since proxies work now properly.