Hide 'new changeset' button when it should not be used

If either promotion or deletion changeset cannot be created,
user won't see the 'New Changeset' button.
Fixed code formating issue in migration
do not mask original error by raise in exception

From Jason email:
In a nutshell, NEVER NEVER NEVER DO THIS:

try:
    .... # some work
except:
    ... # possibly something else that doesn't include logging the traceback
    raise MyOwnExceptionClass('new message here')

We've pointed this out before, and I'm pointing it out again. THIS MASKS
THE ORIGINAL ERROR! When trying to debug these, I usually feel like
strangling someone.

We should either (1) log the current exception and traceback if we're
actually handling the error (e.g. at the top level of the web services
or in the pulp client), (2) re-raise the original error (e.g. useful for
doing some local cleanup), or (3) concatenate the existing traceback to
our new exception (e.g. when differentiating the error condition from an
underlying standard library or third party exception).

Let me demonstrate the last two.

Re-raising the original error (2):

try:
    .... # some work
except:
    .... # local clean up, logging, etc.
    raise

The last empty 'raise' statement will conveniently re-raise the caught
exception.

Concatenating the existing traceback (3):

import sys

try:
    ... # some work
except:
    ... # optional clean up, etc.
    raise PulpException('more meaningful error message'), None, sys.exc_info()[2]

The ', None, sys.exc_info()[2]' portion at the end of the new 'raise'
statement will concatenate the exiting traceback to the traceback
generated by the raise. This allows us to see the original point where
something went wrong instead of hiding it beneath the new PulpException.

Note: it can be any exception, PulpException is just used as an example.
835586 - force the encoding in the header to be UTF8 so Pulp can decode

Without this pulp treats UTF8 encoded strings as standard strings and
will fail to parse some of our headers, namely the pulp-user header.
859877 - ipaddr does not show up for old subman version
863461 - Headpin Cli automation : Failure to list the org updated
with special chars other than ascii chars

this started happening due to strings being double encoded.

cli/src/katello/client/utils/encoding.py blanket-encoded sys.stdout.

then cli/src/katello/client/utils/printer.py encoded all its output that
it was sending to sys.stdout.

string -> encoded -> encoded -> boom
862824 - load search results using where() manually

this allows items that have been deleted to
not cause issues,  warning is still thrown
but is non-fatal
fix for BZ 824581: gpg keys are now being updated
825858 - proxies permissions - removing comments
825858 - implementing proxy permissions
Merge pull request #806 from lzap/unowned-cons-master-merge-825858

825858 - authorized users are able to access and modify other user's consumers
Merge pull request #734 from daviddavis/code-format

Fixed code formating issue in migration
Merge pull request #804 from jlsherrill/862824

862824 - ignoring missing items when loading search results from Active record
Merge pull request #797 from xsuchy/pull-req-raise

do not mask original error by raise in exception
Merge pull request #802 from jsomara/859877

859877 - ipaddr does not show up for old subman version
Merge pull request #646 from Pajk/hide_new_changeset_button

Hide 'new changeset' button when it should not be used
Merge pull request #805 from witlessbird/824581

fix for BZ 824581: gpg keys are now being updated
Merge pull request #803 from komidore64/org-list-fail

863461 - Headpin Cli automation : Failure to list the org updated
removing unused import in cli utils printer.py
Merge pull request #807 from komidore64/org-list-fail

removing unused import in cli utils printer.py