Bug fix in gre header class

The free() method needs to clear the _header_type and _header_ptr_type
instance variables to make recycled objects start off with the base
header.

The new_from_mem() method did not free the object properly when
unsupported flags were encountered.  In that case, the method's return
value was wrong as well.