855267 - CLI add product label and id whereever product name is supported

This is an initial commit for 855267; however, there may be additional
changes as testing is completed.

This commit contains changes so that anywhere a 'product name' can
be used on the CLI the user may alternatively provide product
label or id.  This is necessary because product name is not unique
(i.e. multiple products may have the same name).  As a result,
the user should provide a unique identifier for the product
when using the CLI (e.g. id).

Without this change, the CLI behavior is essentially to always use
the 'first' product returned with the name specified, which can
result incorrect behaviors.

Note: we are leaving product name in place for backward compatability
for cases where there really is only 1 product w/ a given name.  That
said, CLI will now generate an error to the user if they use a name
and it returns multiple products with that name.  That way the user may
resubmit the command using product id (for example) and ensure they
are using the desired product.
855267 - CLI - updates to errata/package/repo based on product chgs

Additional changes for errata, package and repo commands to
properly handle user identifying product by label or id.
855267 - CLI - updates to changesets based on product chgs

Additional changes so that user may specify product by name, label
or id.

This meant the addition of the following options:
--add_product_label
--add_product_id
--remove_product_label
--remove_product_id
--from_product_label
--from_product_id

Note: if there exists more than 1 product by a given name/label,
the user must use the corresponding *_product_id option.
855267 - CLI - changesets - update controller to use before_filter for product

This commit contains changes to retrieve the product as part of
a before_filter to be consistent how objects are retrieved in other
controllers.  The reason for this change is that we began seeing
find_by_cp_id! throwing an exception where find_by_cp_id
would return the object.
866995: Fix the status API so that it is exposed correctly for rhsm.

The issues included:
1) status link was not exposed in /api reposonse body
2) the require_user filter was not skipped, which required that he user be logged in
3) the contents of the body had version only, and not release.
headpin-system-groups - adding system groups to headpin

Includes fencing for foreman
trying to fix tests for automation

they aren't failing for me locally, ibut I fairly certain they're due to
elasticsearch.
Merge pull request #881 from komidore64/custom_infos

trying to fix tests for automation
Merge pull request #880 from thomasmckay/headpin-system-groups

headpin-system-groups - adding system groups to headpin
859892 - system info contains "u"-s in "OS release" field

this was a unicode issue. the 'u's where popping up because python was
printing an entire hash instead of a string. the 'u' signifies it's
unicode string.

looking at consumer.rb for candlepin, you can find a 'release' method
that pulls the string out of that 'releaseVer' hash which is nicer for
the client to print.
855267 - fixes for pylint errors
855267 - CLI - pylint, template and changeset fixes

This commit contains a couple of minor changes raised by pylint;
however, those actually exposed additional changes needed to
support the product name/label/id for changesets and templates.

Essentially, it identified that the templates had not been updated
to support the product label and id.

Also, due to similarities between the code for changesets and templates
it found found some issues with changesets, such as ensuring
that name, label, id is treated as mutually exclusive.
Merge pull request #871 from bkearney/bkearney/866995

866995: Fix the status API so that it is exposed correctly for rhsm.
855267 - fix few strings based on pull request review

The review identified an error in a couple of strings
that were added for 855267.  The format for those
was actually a copy/paste from another string in the
file.  Found and fixed a few similar errors with this
commit.
Merge pull request #882 from komidore64/system-info-u

859892 - system info contains "u"-s in "OS release" field
Properly setting label in before validate method

This is a follow up to pull request #873. After that change we were properly
entering the if statement but not properly setting label. This is a fix so that
now we are setting the label as intended. I've also included an rspec test.
fixing busted cli tests

======================================================================
ERROR: test_finds_org
(katello.tests.core.organization.organization_info_test.OrgInfoTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File
"/home/hudson/workspace/katello-cli-unittests/katello/cli/test/katello/tests/core/organization/organization_info_test.py",
line 45, in test_finds_org
    self.run_action()
  File
"/home/hudson/workspace/katello-cli-unittests/katello/cli/test/katello/tests/core/action_test_utils.py",
line 111, in run_action
    self.action.run()
  File "../src/katello/client/core/organization.py", line 106, in run
    org['system_info_keys'] = "[ %s ]" % ",
".join(org['system_info_keys'])
KeyError: 'system_info_keys'

======================================================================
ERROR: test_returns_ok
(katello.tests.core.organization.organization_info_test.OrgInfoTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File
"/home/hudson/workspace/katello-cli-unittests/katello/cli/test/katello/tests/core/organization/organization_info_test.py",
line 49, in test_returns_ok
    self.run_action(os.EX_OK)
  File
"/home/hudson/workspace/katello-cli-unittests/katello/cli/test/katello/tests/core/action_test_utils.py",
line 108, in run_action
    self.assert_exits_with(expected_return_code)
  File
"/home/hudson/workspace/katello-cli-unittests/katello/cli/test/katello/tests/core/action_test_utils.py",
line 118, in assert_exits_with
    ret_val = self.action.run()
  File "../src/katello/client/core/organization.py", line 106, in run
    org['system_info_keys'] = "[ %s ]" % ",
".join(org['system_info_keys'])
KeyError: 'system_info_keys'

----------------------------------------------------------------------
Merge pull request #884 from komidore64/cli-tests

fixing busted cli tests
855267 - changeset - moving common logic for product opts to a class method

This change is based on pull request feedback to make the 'similar'
logic for pulling product options (name/label/id) in to a common
method.
Merge pull request #883 from daviddavis/label-fix

Properly setting label in before validate method