841289 - perform cleanup on failed registration with activation key

When a client/system/consumer registers with katello, the
creation of the system in katello is handled using a single db
transaction.  In supporting this, it will assign the system
to the activation key, environment, subscriptions, system groups...etc.
In addition, it will create the appropriate records in pulp,
candlepin and elasticsearch.

If an error occurs when creating the katello records (e.g.
system group max members validation error), a DB rollback will
be performed on the transaction.  While this cleans up the
katello DB, it does not affect pulp, candlepin and elasticsearch.

This commit is to addresses that by introducing the after_rollback
callback on the system, candlepin consumer and pulp consumer,
performing the appropriate cleanup in each handler.
package rubygem-transaction-simple is now in EPEL6

https://admin.fedoraproject.org/updates/FEDORA-EPEL-2012-6752/rubygem-transaction-simple-1.4.0.2-3.el6
C0301: 26,0: Line too long (131/120)
C0301:390,0: Line too long (135/120)
fix for BZ 821345
Merge pull request #563 from xsuchy/pull-req-rubygem-transaction-simple

package rubygem-transaction-simple is now in EPEL6
Merge pull request #565 from witlessbird/promotion_errors

821345 - reformatting error message
Merge pull request #564 from xsuchy/pull-req-pylint11

C0301: 26,0: Line too long (131/120)
851142 - CLI: changeset update shows strange error
cli - introducing debug log level env variable
create __str__() for AsyncJob

just to easy debuging
Simplify AsyncJob by inheriting from AsyncTask
make _task attribute of instance instead of attribute of class
since AsyncJob is instance of AsyncTask, there is no need for wait_for_async_job and we can use wait_for_async_task instead
job without task should not exists, this is error

katello-cli expect always some state

addressing:
2012-08-31 04:22:36,510 [ERROR][MainThread] error() @ base.py:181 - Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/katello/client/cli/base.py", line 191, in main
    ret_code = super(KatelloCLI, self).main(args, command_name, parent_usage)
  File "/usr/lib/python2.6/site-packages/katello/client/core/base.py", line 293, in main
    return subcommand.main(self.args[1:], self.args[0], self._get_usage_line(command_name, parent_usage))
  File "/usr/lib/python2.6/site-packages/katello/client/core/base.py", line 293, in main
    return subcommand.main(self.args[1:], self.args[0], self._get_usage_line(command_name, parent_usage))
  File "/usr/lib/python2.6/site-packages/katello/client/core/base.py", line 368, in main
    return self.run()
  File "/usr/lib/python2.6/site-packages/katello/client/core/system_group.py", line 463, in run
    run_spinner_in_bg(wait_for_async_job, [job])
  File "/usr/lib/python2.6/site-packages/katello/client/core/utils.py", line 263, in run_spinner_in_bg
    result = function(*arguments)
  File "/usr/lib/python2.6/site-packages/katello/client/core/utils.py", line 496, in wait_for_async_job
    while job.is_running():
  File "/usr/lib/python2.6/site-packages/katello/client/core/utils.py", line 458, in is_running
    return (len(filter(self._subtask_is_running, self._jobs)) > 0)
  File "/usr/lib/python2.6/site-packages/katello/client/core/utils.py", line 474, in _subtask_is_running
    return job['state'] not in ('finished', 'error', 'timed out', 'canceled', 'not_synced')
KeyError: 'state
fix un-determinism in rhsm system test

Rhsm subscribe to pool was failing sometimes due to incorrect
variables substitution when getting a serial id to unsubscribe.
Merge pull request #568 from iNecas/fix-rhsm-test

fix un-determinism in rhsm system test
Merge pull request #566 from Pajk/851142

852006 - 'Type' field shouldn't be empty under 'changeset list' command and should show the changeset type e.g. (deletion/promotion)
853995 - error handling for non-existing systems
853056 - improve 404 generic error message
853056 - system register without environment is working again