Qofcollection C++ implementation

Major changes to QofCollection

1. new C++ class of QofCollection in namespace `gnucash::qof`
2. unit tests for legal QofCollection C implementation, and fix type conversion by using Glib's `GPOINTER_TO_INT` and `GINT_TO_POINTER` instead of (gint *).
3. same unit tests in C++ to QofCollection class to ensure C++ implementation does the same things as what C implementation does.