Tighten allocated memory blocks

Currently the library struct containts 4 different arrays of:
- values
- value hashes
- keys
- key hashes

This can be optimized so that a sub-object is introduced
and only one linear buffer is allocated for the entries.

This patch introduces the object cfg_entry_t which
plays that role, and which can now be used to retrieve
entry[n] via, something in the lines of:

cfg_entry_t e = my_cfg_struct.entry[n];

Quite possibly more of a memory fragmentation optimization
rather than a performance boost.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Add a method to retrieve the n-th entry

The declaration of the new function is:
cfg_entry_t *cfg_entry_nth(cfg_t*, cfg_int);

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>