Overview of Changes from gini-0.3 to gini-0.4
=============================================
* API changes:
    + gini_new() now takes an optional filename argument.
      gini_new_full(), gini_load_full(), and gini_parse_data_full()
      now require GIniOrderType and GIniFlag arguments.
    + Renamed funcs:
        gini_file()           -> gini_get_file(),
        gini_file_set()       -> gini_set_file(),
        gini_section_count()  -> gini_get_section_count(),
        gini_section_name()   -> gini_section_get_name(),
        gini_section_ini()    -> gini_section_get_ini(),
        gini_entry_count()    -> gini_section_get_entry_count(),
        gini_entry_ini()      -> gini_entry_get_ini(),
        gini_entry_section()  -> gini_entry_get_section(),
        gini_entry_key()      -> gini_entry_get_key(),
        gini_entry_val()      -> gini_entry_get_val(),
        gini_entry_val_type() -> gini_entry_get_val_type(),
        gini_version()        -> gini_get_version().
    + Added funcs: gini_entry_get_section_name(), which returns the
      name of the section the entry is located in. gini_entry_del()
      as lower-level counterpart to gini_entry_remove(), avoiding the
      cost of an additional lookup if not needed. gini_section_del()
      is just a #define, for continuity.
    + Exposed funcs: gini_entry_new_with_type().
* Added section & entry ordering, case sensitivity flag. Ordering is
  enabled for gini_new(), gini_load(), and gini_parse_data(), but is
  disabled for _full(), and case-insensitivity is enabled by default.
  Use of ordering for extremely large .ini files is discouraged as
  management of the linked-list will greatly impact performance.

Overview of Changes from gini-0.2 to gini-0.3
=============================================
* API changes:
    + gini_entry_add(), gini_entry_remove(), and gini_entry_lookup()
      now only take a GIniSection *.
    + New funcs: gini_entry_(g|s)et_pointer().
      * Note: Values of G_TYPE_POINTER will NOT be saved, instead
              silently discarded. The memory pointed to by this type
              will not be touched (even when the GIniEntry is freed),
              so you could think of it as a convenient data store.
* gini is now thread-safe.

Overview of Changes from gini-0.1 to gini-0.2
=============================================
* API changes:
    + New types: uint, ulong, int64, uint64.
    + gini_section_new() and gini_entry_new() now take const args,
      gini_section_del() and gini_entry_del() renamed to _remove(),
      gini_section_get() and gini_entry_get() renamed to _lookup(),
      gini_entry_val() now returns GValue * instead of gchar *,
      gini_entry_count() only takes char *section_name, gini_free()
      has been replaced by gini_unref(), the _str() & _bool()
      convenience funcs have been renamed to _string()/_boolean().
    + New funcs: gini_entry_val_type(), gini_entry_get_as_type(),
      gini_entry_get_val_as_type(), gini_entry_set_as_type(),
      gini_ref(), gini_unref(), gini_init().
* Entry values are now stored as their native type (when known),
  which should have some improvement for applications making heavy
  use of the gini_entry_(g|s)et_<type>() convenience functions.
  Cross-calling between types (especially to/from string) should be
  avoided or minimized, as the extra work undermines the benefit.
* Added a simple example (examples/basic.c).
