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.
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.
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.
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.
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
865811 - use the concurrency level calculation suggested in BZ

Using too small number (1) causes dead lock when syncing repos, not syncing
anything at all. At least 2 processes need to be allowed.
Merge pull request #885 from iNecas/bz865811

865811 - use the concurrency level calculation suggested in BZ
855267 - fix string issue raised in pull request review

The issue raised in the pull request review is a generic issue
that we should address throughout the CLI code.  In order to
minimize risk to current build, this commit is changing only those
raised by the review or near those lines; however, we'll want to
scrub the cli for similar changes.

The general issue raised is:
    % has to be outside of _(), otherwise translations can't work
Merge pull request #854 from bbuckingham/fork-855267

 855267 - CLI add product label and id whereever product name is used
868916 - katello-upgrade bash array fix
Merge pull request #887 from lzap/upgrade-bash-fix-868916

868916 - katello-upgrade bash array fix
862997 - On content search page, during repository comparison, clicking
the show more button will now properly load more data for packages and
errata.
Merge pull request #877 from ehelms/bug-862997

862997 - On content search page, during repository comparison, clicking
RAM entitlements

- easier to view memory & socket limits for machines in UI & CLI
- support for limits of various types in the ui
- socket & RAM suppot in elasticsearch
- RAM support in candlepin is still WIP; this provides very basic UI
  support but more work will likely need to be done around pool selection
Merge pull request #848 from jsomara/ram

RAM entitlements