Implementation of https://blueprints.launchpad.net/percona-xtrabackup/+spec/support-separate-undo-tablespace
In order to backup separate undo tablespaces they must be added in the fil_system list of tablespaces on the backup stage. This is implemented in srv_undo_tablespaces_init(), which needs some modifications for XtraBackup. First, create_new_db is always FALSE in XtraBackup. We also need another argument to check if we can read the number of currently used undo tablespaces from the trx header. We can't do that on the backup stage, so we just do what srv_undo_tablespaces_init() would do in 'create_new_db == TRUE' mode, i.e. just assume the number of available undo tablespaces is the number of used tablespaces.
We also have to restore undo tablespaces on --copy-back (unlike e.g. separate doublewrite tablespace in PS). The reasons are that:
1) the server would refuse to start if the number of available undo tablespaces is less than the number of configured ones.
2) we can prepare the backup with --redo-only (i.e. let the server rollback uncommitted transactions)
There were also some tweaks to the test suite required to create a test case. Previously my.cnf was only used by xtrabackup, but not the server itself (one had to pass arguments to start_server and then add the same arguments to my.cnf for xtrabackup to "see" them). Now my.cnf is used by both server and xtrabackup, and it is possible to add custom entries to my.cnf using the MYSQLD_EXTRA_MY_CNF_OPTS variable.
This patch also fixes bug #1169971: "Lost InnoDB messages in xtrabackup_56".