Rename struct ParserData to struct OPK
Introduce function opk_read_pair, remove function opk_read_param

Previously, libopk was generating a linked list of all key/value
pairs when loading the metadata; then opk_read_pair was used
to retrieve the value of the key passed as parameter.

This design has several drawbacks:
- the whole meta-data is processed and all key/value pairs are
  stored in memory when the meta-data is opened, even if we only
  need to retrieve one pair;
- you need to specify the key which value should be retrieved, so
  you cannot retrieve a value with an unknown key;
- it is therefore near impossible to implement bindings for other
  languages like Python.

With the new design, opk_open_metadata only open an OPK's .desktop
file and verify that it contains the right header; it does not
pre-process the whole metadata.

Instead of calling opk_read_param with the key which value should
be retrieved, the function opk_read_pair must be used.
It will set the (const char *) pointers passed as reference
to the function to the next key/value pair that has been read on
the .desktop's meta-data. It will also set the (size_t) variables
passed as reference to the length of the key/value char arrays;
retrieving the length is needed here are the char arrays are not
null-terminated strings but pointers to the file's content.
Switch to using libini to parse the .desktop meta-data

Using libini simplifies the code of libopk by much. While it
adds a dependency to libopk, libini is extremely portable and
shouldn't cause any problem for portability.

Furthermore, libini provides the ability of reading meta-data
outside the main [Desktop Entry] section; as a result, additional
application actions could be implemented for OPKs, as defined
by the Freedesktop .desktop entry specification, to increase the
field of possibilities.
Change opk_extract_file so that it returns the size as well

Not returning the size and only the allocated buffer is obviously
not a smart idea, so this change was really needed.
Return integers instead of booleans in functions of the public API

Previously, it was necesary to read the values of the pointers
passed as reference to opk_read_pair to know whether or not a
parse error occured, or to detect that no more pairs can be found,
as the function would return 'false' on both cases.

Now, we return an integer that gets the value -1 on error,
1 when a pair has been read, and 0 otherwise.

As we want to keep compatibility with applications compiled as C89,
although we use C11 for the library implementation, and as "bool"
is different in C and C++, we decided to get rid of boolean
values in the public API; as such, opk_extract_file now returns
an integer instead of a boolean, which equals -1 on error and 0
otherwise.
Change prototype of API function opk_open_metadata()

It now returns an integer instead of a pointer to the meta-data
file's name; the pointer passed by reference as the second
argument of the function will be used instead to return the
filename.

This allows us to return proper error codes, and to properly detect
errors (as NULL was returned on error but also if no more meta-data
file was to be found).
Add Python bindings
Added opkrun utility

This utility provides an easy way to run an application packed
inside an OPK package. It was also written as a mean to test the
Python bindings.
Added Python binding of function opk_extract_file

The Python function 'extract_file(opk, file)' can now be used.
Its first argument should be a string corresponding to the
filename of the OPK; the second argument should be a string
corresponding to the name of the file to extract. That function
returns an object of type 'StringIO' which can then be used
like any other file in Python, with read/seek/tell/close ...
Make opk_extract_file() return different values for different errors

Instead of -1, it will now return:
-ENOENT if the file to extract is not found,
-ENOMEM if the buffer cannot be allocated,
-EIO if the file cannot be read.
unsqfs: Inline squashfs_uncompress() into read_compressed()
unsqfs: Return meaningful error codes as much as possible
opkrun: Remove %f and %F on the Exec line if no files were passed
unsqfs: complete error management
Complete error management in libopk, and update public API
Increase version number to 1.0
Update Python bindings to use the v1.0 library
Makefile: add 'uninstall' and 'uninstall-lib' targets
opkrun: Fix launching of OPKs that require files
Introduce function opk_file_exists()