Introduce CObject

CObjects are lightweight objects for C programming language.
Current (or goal) features are: (semi-)automatic initialization and
destruction, inheritance and type inference. But what is more
important: KISS. No difficult constructions, just two macros
for declarinc new class and two more macros for defining
constructor and destructor. New empty class MyClass inheriting from class Foo
would be declared as:

  /* CLASS(name_of_class, extends_class) */
  CLASS(MyClass, Foo)
  {
    /* this is mandatory and must be first element of class */
    CLASS_EXTENDS(Foo);
  }

  /* each class must have init and destroy functions */
  CLASS_INIT(MyClass)
  {}

  CLASS_DESTROY(MyClass)
  {}

And that's it! Further in the code, user can create new MyClass object as:
  MyClass obj;
  cobject_init(MyClass, &obj);

Or dynamically:
  MyClass *obj = cobject_new(MyClass); /* initialization included */

And destroy object as:
  cobject_destroy(obj);
cobject-dump

small testing program for CObjects