843529 - system group tasks - handling when systems are removed

This commit contains changes to address the first observation raised
in comment #3 of the bug.  Ref:

"Now it does not show Error, but it shows empty list of events.
Like if there were 3 history items, it shows "Viewing 3 of 3
results" in the bottom of the page. And shows list of 3 items
but with empty data, event and date field values are empty."

The issue raised is that while the tasks are deleted, the job
still exists.  This commit will delete the job, once the last
task has been deleted.
843529 - system group tasks - better way for handling nil job

This commit reverts the change made on a previous commit that
looked for job.nil? in the _show.html.haml.  It would be better
to do this check outside of the haml rendering.
843529 - fix spec test on system group events
fixed an issue when it was impossible to remove a repository that had no promoted content
845995 - write error is systemgroup does not exist

additionally merge duplicate code of RemoveSystemGroup and AddSystemGroup into new class BaseSystemGroup
854801-autoheal - word change
object labels - by default, assign label by 'labelizing' the object name

This is an initial commit to facilitate assigning the label when
a user creates a new object (org/env/product/repo) in the UI.  The
default assignment will be by running the model_utils::labelize
on the object name.  This will change in the future to use
punycode (or alternative); however, the UI behavior will remain
regardless of algorithm use to derive the label.

The following is the general UI behavior:
1. user clicks the appropriate link to open a new object form (e.g. org)
2. the label input and save button are disabled
3. user clicks on 'name', enters a value and leaves the input box
4. browser initiates an ajax request to server to request a default
   value for the label
5. once received, browser sets the label, enables it and enables
   the save button

If desired, the user may edit the name.  Doing so, will disable
the label input, save button and repeat 3-5.

If the user doesn't like the default label, they may change it,
so long as it follows the 'validation' requirements.
object labels - update ui for setting label values based upon server query

This commit adds some additional logic to the UI for handling the
setting of object.label based on a server query.  They changes are
primarily to improve the behavior for the user.  E.g.

- when user enters name, put spinner on the 'label' so user can see
  something is happening
- after user enters the name, if they click the name and leave,
  don't prompt the server for a new label... only do that if the
  name is changing
- additional error handling...etc
object labels - moving the default_label action to the application controller
CustomInfo for Systems

adding CustomInfo to the database along with a few tests for the model

migrating the db by adding a CustomInfo table and indexes

adding inflection directives so that custom_info is both plural and singular

adding the CustomInfo model with validations
	- the model allows multiple keys with the same
          name, but the combination of key and value
          must be unique on a per-informable basis

a few simple tests for the CustomInfo model

adding CustomInfo to Systems objects

adding custom info to systems for cli

Adding some rspec tests for custom info controller api

include custom info in 'system info' command
include custom info in 'system report' command
Merge remote-tracking branch 'upstream/master' into fork-set_labels
843529 - minor update per pull request comment - use if/else vs unless
Merge pull request #713 from bbuckingham/fork-set_labels

object labels - by default, assign label by 'labelizing' the object name
fixing spec tests for custom_info
removing a couple missed debugger statements
Fixed the labelize call to deal with i18n characters

Basically labelize will now generate UUIDs if i18n characters
are provided in the name and no label is provided.

Also updated the environment, product and repo models
to automatically generate labels via labelize call
if they are not provided
Update the env, prod migrations to use labelize
857499 - Fix for user with no orgs or perms.
Merge pull request #715 from parthaa/labelizeV2

Labelize
857720 - Javascript error if selecting Org in Providers page

Also fixed expand/collapse arrows on this page