Taking benefit from the end of the postgres 8.2 support, various code improvements.

In particular:
- pg version checks are adjusted accordingly,
- several specific code for postgres 8.2 is removed
- the emaj._txid_current() function is replaced by its postgres equivalent, txid_current(),
- a SET clause is used in CREATE FUNCTION instead of a SET statement in the function's body,
- RETURN QUERY is used replacing FOR loops with RETURN NEXT
The emaj_generate_sql() function is renamed emaj_gen_sql_group() for consistency with other functions names.
Add a new emaj_gen_sql_groups() function.

This function generates a sql script replaying all updates recorded for a set of groups between two marks or between a mark and the current situation.
To do this, the emaj_gen_sql_group() function has been split, a new _gen_sql_groups() function holding the common code for both functions.
Both emaj_gen_sql_group() and emaj_gen_sql_groups() functions may have an additional text array parameter specifying a set of table or sequence names. This optional parameter represents a filter of tables and/or sequences to process.

The _check_group_names_array() has been renamed _check_names_array() to also process tables/sequences arrays.
Optimise the _gen_sql_groups() function by calling _gen_sql_tbl() only for tables which have effectively log rows to process.

Some measurements show there is a benefit when less than 95% tables have sql to generate, which is the most frequent case.
Add an emaj_user_port column into each log tables. It holds the ip port of the remote user who performed the recorded update and complements the the already existing emaj_user_ip column.
In the emaj_mark table, replace the mark_state column by a boolean column named mark_is_deleted.

This lowers the risk of inserting bad values for this data, and using an enum column type with only 2 values is not worth the trouble.
In the emaj_group table, replace the group_state column by a boolean column named group_is_logging.

This lowers the risk of inserting bad values for this data, and using an enum column type with only 2 values is not worth the trouble.
Redesign the rollback processing to be able to monitor the rollback operations progress.
3 tables have been created: emaj_rlbk, emaj_rlbk_session and emaj_rlbk_plan to register rollbacks and their execution plan.
During the rollback operation, these 3 tables are updated, if possible, by autonomous transactions, using dblink.
To use dblink, the dblink contrib or extension must have been installed and a 'dblink_user_password' parameter must have been set into the emaj_param table.
For security reason, emaj_viewer roles are not allowed to look at emaj_param.
The emaj_fkey table has been suppressed.
All internal functions have been renamed. The parallel rollback client has been updated accordingly.
The tables are now affected to sessions taking into account the duration estimates of all steps, including those that manage foreign keys.
The real durations of some short steps like log triggers disabling and enabling are now recorded into the rlbk_stat table.
Foreign keys processing are now processed as close to the table rollback as possible to take benefit from tables content currently in shared buffers or OS cache.
A new emaj_cleanup_rollback_state() function set the final COMMITTED or ABORTED state of rollback operations. This function is regularly called by other emaj function, but the emaj administrator may also use it.
This commit also fix a rare case that may arise when a rollback is asked while tables are continuously updated. At the beginning of a rollback operation, if a table known as 'not needing rollback' at initialisation time is updated before the locking step, this table will not be rolled back, generating a loss of consistency between tables of the group. A check is now added, so that the rollback safely fails if this happens.
There is some more work to do around this major change. But we now have a stable point with this commit.
Rework the purge_hist() function.
Add the purge of all rollback tables (except emaj_rlbk_stat), set the default value for the 'history retention' parameter to 1 year instead of 1 month, and record the purge into the emaj_hist table if rows have really been deleted.
improve the rollback processing, by directly calling the _log_stat_tbl() function instead of emaj_log_stat_group() to get and check the estimated number of updates to rollback for each table.
Improve the rollback processing again to prepare the code share with the future _estimate_rollback_groups() function.
Mainly remove the NOT NULL attribute to some emaj_rlbk tables.
Move the checks of the emaj_rollback_groups() supplied parameters into a new _rlbk_check() function so that these checks can be shared with the future emaj_estimate_rollback_groups() functions.
The emaj_estimate_rollback_duration() function is replaced by two new functions, namely emaj_estimate_rollback_group() and emaj_estimate_rollback_groups(), the later estimating the duration of a multi-groups rollback.

They share some pieces of code with the rollback functions.
A third parameter specifies whether the rollback is logged or not.
Add a new emaj_rollback_activity() function that provides information about in progress rollback operations.

It returns a set of rows of type emaj_rollback_activity_type. They contain a description of each running rollback operation, as well as a remaining duration estimate and a percentage of work already done.
emaj_adm and emaj_viewer roles can call it.
Report the changes coming from the newly created 1.0.2 version.
In _create_tbl(), verify that the table is neither a temporary table nor an unlogged table.
In rollback operation, the hist_event value 'MARK DELETED' is replaced by 'DELETE MARK'.
Add a rlbk_msg column into the emaj_rlbk table to store a final message for the rollback operation (either OK or KO).
Store a completion message (similar to the message inserted into the emaj_hist table) when the operation goes well.
And trap the errors in all main rollback functions to populate this new column if a problem occurs.
(Some additional trapping to add when pg 8.3 will not be supported any more)
Create a new technical function named _rlbk_async and dedicated to the phpPgAdmin plugin. It calls the main internal rollback functions after initialisation. Called asynchronously, it allows the ppa plugin to switch on the rollback monitoring just after the rollback submission.