content views - ui - composite view promotion - help users with component views

When promoting a composite view to the "dev" environment,
the process basically takes the version of each of the
component views that is in "dev" and generates a new
composite view in "dev" from those components.  This
requires that all of the component views have already
been promoted to dev.

In order to simplify this process for the user, this
commit performs the following:

- if the user adds a composite view to a changeset, automatically
  add any component views to the changeset that have neither
  already been promoted to the next environment nor have been
  added to the changeset.  This will only be done for those
  component views that the user has permission to promote.
  The user will be informed via a 'message' notice of
  and component views that were added to the changeset for them.

- if the user later removes one of those component views, when
  they attempt to promote the changeset, generate an error
  to inform them of the need to also promote the component
  view
content view - refactor add_content_view logic in controller to model

The controller has logic to when adding a content view to a
changeset, to also add the component views.  Refactored this
logic out of the controller and to the model so that it can
be leveraged by the API later.
content views - fix changeset.add_content_view test
Remove expectations on nil warnings

When running all rspecs somewhere in the middle were displayed warnings
that you are expecting message receive on nil objects. This was caused
by wrong variable names in systems_controller_spec.
Fix ping spec

Headpin ping spec was not set in headpin mode so it tried to contact
Pulp. I DRYed up this spec and added config stubbing so it works
correctly.
CLI - Moves po directory to locale for consistency with server and
standard python projects.
Started refactoring content search with content view search
Refactored product content search
CLI - Moves each po file into it's own directory to mimic server
locale structure and that of the standard deployment for locale
files.
CLI - Adds environment variable for setting client conf location.
CLI - Adds a setup.py file for packaging the CLI for registration
on the PyPI index.
CLI - Updates the Makefile to properly clean .mo files and removes those added
by a previous commit.
content views - fix the permission checked when destroying a definition
content views - add some spec tests for content view & definition controllers

This commit contains several tests for the above UI controllers.
There will be more tests introduced; however, didn't want to wait
till all are finished before commiting.
Use logging gem for all logs

Logging gem provides advanced logging features. From now on we use it
for every log call in katello. It also replaced KatelloLogger. We have
simple loggers hierarchy, they are all children of default root logger.
Only the root logger has appender that logs to just one file.

In order to make tire logging to Katello-wide logger a TireBridge was
created. It injects logging target to Tire objects. Only drawback is
that Tire does not specify log level of a message so we mark it the same
level as is set in current configuration of Tire logger.
New logging configuration

Cleanup of old configuration values. A new logging system is now
configurable via katello.yml. You can set severity for each logger,
pattern different for each environment and much more.

Also there is now fallback if anyone makes a mistake and set wrong
appender name, it will log at least to STDOUT which makes debugging less
painfull.
Syslog support

You can configure logging to use syslog instead of rolling file. You can
use type option for this purpose. Nothing extra is needed but note that
syslog has it's own severity filtering.

Syslog facility daemon is being used. Ident is set to katello (or
delayed_katello for delayed job)
Support for log trace

You can set log trace feature in logging configuratio now which will add
an extra line to every log message that displays from which file:line
and method was this message logged.

This also implies all loggers must be named in configuration. When you
add a new logger somewhere in code you must mention it in configuration
otherwise log trace feature won't work for this logger.
Remove logrotate configuration not needed anymore

Logging gem has support for log rotation by itself. We don't need
external logrotate for production and delayed job logs. Also elastic
search is now part of production log. Other logs out of katello
scope (thin server) must be still rotated by logrotate.

Katello client rotates log by itself when it reaches 1MB. It keeps 5
last log files.
Support for custom log file path