EUCA-8710: Service Registration & Configuration fixes

- EmpyreanService fixed handles service full names correctly.
- ComponentConfiguration updated to increase @DiscriminatorColumn from 31
  (default, too small) to 255.  May require subsequent upgrade class
  which performs:
  alter TABLE config_component_base ALTER column dtype type  character varying(255);
- ServiceConfigurations, EphemeralConfiguration updated to handle equality
  and ServiceStatus transformations correctly.  Now always bijective.
- ComponentIds adds listTypes for subsequent usage.
- Component logs Threads.currentStackFrameRange of callers to initService.
  Towards triage of "phantom" deregistered configurations being restored
  by asynchronous callers.
- NodeController fixed to correctly report isPartitioned.
- SericeOperations logs error information to an available place.
- Fix to dependency information in ivy.xml.
EUCA-8710, EUCA-8924: @TechPreview for ServiceGroups

- Add @TechPreview annotation for use by ServiceGroups
  during registration
- Annotate CloudFormation
EUCA-8710,EUCA-8924: Add partition param

- Allow passing the partition for the user facing
  service configuration types.
- Updates their configurations and builders
- Only used by the subsequent ApiEndpointServiceGroup
EUCA-9103, EUCA-8924: Service registration CLIs

1. Old registration continues to work as before on both client and
   server side with the exception of --register-osg (below).
2. New registration CLI behaviour detailed below.
3. Service implementation details in the commits related to EUCA-8710.
 * Note: these changes are orthogonal to, so do not address, EUCA-7151
   and related deregistration issues.

- Adds --register-service [1].
- State [2] or registration [3] errors for any registered services are
  reported as part of the command output.
- The errors of other broken or notready services are also reported [4].
  This can be amended at will.
- Old style register-osg still works [5].
- Adds --deregister-service [6] continuing to preserve --deregister-osg
  [7]. Note: the deregister-osg command does not munge names and the
  right ones must be used based on the existing
- service configurations; this can be altered to be symmetric with the
  register-osg munging.
- Service configuration updates function as expected [8].
- Single register/deregister commands which can subsume all others [9].
  Exact same code paths as euca_conf --{register,deregister}-service.
- Describe service groups by partitions [10], tool implementations
  identify services, service groups and their members and all related
  characteristics using DescribeAvailableServiceTypes
  (see serviceregistration.py).
- Related human readable and comprehensive service availability and
  registration help computed based on system responses (as above; see
  DescribeAvailableServiceTypes) [11].
- Exposed error information for registration/deregistration [12].
- Simpler service error information from describe-services [13].  Old
  output (on stdout) remains unchanged, but could be easily pruned as it
  is largely subsumed by this output.

[1]  euca_conf --register-service -T user-api -H 10.111.1.66 -N API_66

[2]  Report of the objectstorage configuration error on first time configuration.
     ERROR  objectstorage       API_66      API_66.objectstorage   OSG object storage provider client not configured. Found property 'objectstorage.providerclient' empty or unset
manager(unset).  Legal values are: riakcs,ceph-rgw,walrus,s3

[3]  Duplicate configuration for a service which is part of the user-api service group.
     euca_conf --register-service -T tokens -H 10.111.1.66 -N API_66.tokens >/dev/null 2>&1;\
     euca_conf --register-service -T user-api -H 10.111.1.66 -N API_66
     error: registration failed
     ERROR  Registering  arn:euca:bootstrap:API_66:tokens:API_66.tokens/  failed because of  Component with name=API_66.tokens already exists with host=10.111.1.66

[4]  euca_conf --register-service -T user-api -H 10.111.1.66 -N API_66
     ERROR  cluster             PARTI00     CC_66                  java.net.ConnectException: Connection refused: /10.111.1.66:8774
     ...

[5]  euca_conf --register-osg --partition objectstorage --component OSG_66 --host 10.111.1.66
     Created new partition 'API_66'
     SERVICE  user-api            API_66      API_66                 http://10.111.1.66:8773/services/User-API  arn:euca:bootstrap:API_66:user-api:API_66/
     ...

[6]  euca_conf --deregister-service -T user-api -N API_66

[7]  euca_conf --deregister-osg  -P API_66 -C API_66

[8]  Change from host 10.111.1.66 to 10.111.1.71 for an already registered service:
     euca_conf --register-service -T user-api -H 10.111.1.71 -N API_66

[9]  Single register/deregister commands
     euca-register-service -T user-api -H 10.111.1.66 -P API_66 API_66
     euca-deregister-service API_66

[10] Describe a service group by using partitions
      euca-describe-services -P API_66

[11] euca_conf --register-service

    SERVICES
      The following commands are for registering specific services in Eucalyptus

      Eucalyptus       eucalyptus service implementation
                       euca_conf --register-service -T eucalyptus -N <NAME> -H <HOST>

      VMwareBroker     The VMware Broker service
                       euca_conf --register-service -T vmwarebroker -N <NAME> -H <HOST> -P <PARTITION>

      Arbitrator       The Arbitrator service
                       euca_conf --register-service -T arbitrator -N <NAME> -H <HOST> -P <PARTITION>

      Storage          The Storage Controller service
                       euca_conf --register-service -T storage -N <NAME> -H <HOST> -P <PARTITION>

      cluster          The Cluster Controller service
                       euca_conf --register-service -T cluster -N <NAME> -H <HOST> -P <PARTITION>

      WalrusBackend    The legacy Walrus Backend service
                       euca_conf --register-service -T walrusbackend -N <NAME> -H <HOST>

    SERVICE GROUPS
      The following commands are for registering service groups in Eucalyptus

      User-API         The service group of all user-facing API endpoint services
                       euca_conf --register-service -T user-api -N <NAME> -H <HOST>

                       This will register the following services:
                       Euare            IAM API service
                       CloudFormation   Cloudformation API service
                       Compute          the Eucalyptus EC2 API service
                       CloudWatch       CloudWatch API service
                       ObjectStorage    S3 API service
                       Tokens           STS API service
                       LoadBalancing    ELB API service
                       AutoScaling      Auto Scaling API service

[12] euca_conf --deregister-service -T user-api -N API_66
     error: deregistration failed
     ERROR  Failed to deregister user-api: API_66 because of : Failed to lookup any registered component with the name: API_66

[13] euca-describe-services -E >/dev/null
     ERROR  loadbalancingbackend  eucalyptus  10.111.1.66            ColocationBootstrapper.enable( ): failed because of: The loadbalancingbackend service depends upon a locally ENABLED
eucalyptus, terminating bootstrap for component: loadbalancingbackend
     ERROR  loadbalancingbackend  eucalyptus  10.111.1.66            ERR-1014 2014-04-23 13:42:31 Load balancer image not configured.  LoadBalancing service will not be available.
     ERROR  loadbalancingbackend  eucalyptus  10.111.1.66            LoadBalancingPropertyBootstrapper.enable( ): returned false, terminating bootstrap for component: loadbalancingbackend
     ERROR  imaging             eucalyptus  10.111.1.66            ERR-1015 2014-04-23 13:42:31 Imaging worker image not configured.  Imaging service will not be available.
     ERROR  imaging             eucalyptus  10.111.1.66            ImagingServicePropertyBootstrapper.enable( ): returned false, terminating bootstrap for component: imaging
EUCA-8710,EUCA-8924: @Description for ComponentIds

- Add @Description annotation used by subsequent
  DescribeAvailableServiceTypes operation to give a human readable
  description for registerable components and groups.
- Applied @Description as needed to existing ComponentIds.
EUCA-8710,EUCA-8951,EUCA-9101: Propagate fault info

- Faults, FaultBuilder, FaultBuilderImpl updated to:
  1. Expose the fault string that is produced for external use.
  2. Related components updated to submit registration and configurable
     properties related messages accessible through DescribeServices.
- Fault assignment is fixed to use right service full name.
- Multiple fault per service is fixed.
- Faults are deduplicated.
EUCA-8710: Move ServiceEvents to its own package

- Preparing for subsequent ServiceGroup usage.
EUCA-8710,EUCA-8924,EUCA-9101,EUCA-9103: Service Groups

- Introduces ServiceGroups which extends ComponentId
- Register and deregister group service coordination implemented.
- APIs for subsequent extension to handle group enabling, disable, etc., is
  present but not implemented to support this purpose.  Further grouping support
- Adds the related ComponentId, ServiceBuilder, along with Base Configuration
  and ServiceBuilder classes are there to extend.
- Adds ApiEndpointServicesGroup which coordinates @PublicServices which are
  also registerable.
EUCA-8710,EUCA-8924,EUCA-9103: Service Registration Operations

- Support for ServiceGroup registration
- Add the {Register,Deregister}Service operations.  These support (and are
  the only path to using) ServiceGroups.  ServiceRegistration* handle
  the {Register,Deregister}Service and DescribeAvailableServiceTypes
  operations.
- Add DescribeAvailableServiceTypes operation.  This exposes machine readable
  descriptions of the available service types and their characteristics for
  use in tool implementations.  An example, from eucadmin tools below,
  generates all possible --register-service command lines and describes them.
- Previously existing code which changes in support of these operations:
-- ComponentRegistrationHandler updated to return service configuration
   information
-- ConfigurationManager updated to reflect change in return type of
   ComponentRegistrationHandler
-- EmpyreanService.describeServices updated to use a stable ordering