Engine: models: include_root_in_json=false for all katello models

This change is to ensure that the root node (e.g. 'user', 'system'...etc)
is not included in results generated via 'as_json'.

This change will primarily impact the v1 APIs which return data
via as_json; however, it will not impact the v2 APIs that are
generted via rabl.

One of the reasons this change is necessary is to ensure compatability
with the subscription-manager which does not expect to receive named
objects.
Engine: models: test fixes for: include_root_in_json=false
Merge pull request #3361 from bbuckingham/engine-include_root

Engine: models: include_root_in_json=false for all katello models

Rebased branch with engine branch to ensure that all tests recently enabled in the branch are still passing.  Also added a commit to address a couple of failures that did occur after removing the root node.
Engine: Fixes #3642: Cleans up spec/lib tests.
Engine: Refs #3641 - Fixing v1 controller tests
Merge pull request #3372 from daviddavis/temp/20131113132421

Engine: Refs #3641 - Fixing v1 controller tests
Merge pull request #3374 from ehelms/engine-spec-lib

Engine: Fixes #3642: Cleans up spec/lib tests.
Engine: Refs #3641 - Fixing v2 controller tests
Merge pull request #3378 from daviddavis/temp/20131114093349

Engine: Refs #3641 - Fixing v2 controller tests
Engine: only create pulp_server if remote_id exists

The remote_id will almost always exist; however, this change
is to address a single scenario where we know that it will not.
When the katello engine is initially included in to the foreman
core and the user runs db:migrate, this logic will get hit;
however, it is prior to the migration that adds the remote_id.
Engine: API: changes to support subscription-manager interactions

This commit contains several changes to support various
subscription-manager actions from a client.

e.g.
- subscription-manager
  - register/unregister
  - subscribe/unsubscribe/list
  - environments
  - organizations

When interacting with the client, there are scenarios where
the client cert is needed to support interfacing with backend
engines.  As a result, 'require_user' has been extended to
utilize that certificate in a manner similar to what was
previously done by warden.rb (i.e. pre-engine).
Merge pull request #3379 from bbuckingham/engine-systems

Engine: API: changes to support subscription-manager interactions
Merge pull request #3383 from bbuckingham/engine-single_migrate

Engine: only create pulp_server if remote_id exists