Fix Query API binding of multiple parameters with complex types.

BaseQueryBinding is updated to correctly handle HttpEmbedded for the
multiple=true case, this is necessary to support passing of filter
key/values.

An example of query parameters that would previously be partially bound
are:

  Filter.1.Name=instance-id
  Filter.1.Value.1=i-00000001
  Filter.2.Name=public-ip
  Filter.2.Value.1=1.1.1.1
  Filter.2.Value.2=2.2.2.2

Prior to this fix, only one filter name/value(s) pair would be bound.
Remove tags from gitignore as it is too broad
Add support for EC2 tagging (EUCA-4714)

Support is added for EC2 tag operations:

  CreateTags
  DeleteTags
  DescribeTags

A Tags groovy file is added for tag messages and a new TagManager
service class is added / configured for messages of type
ResourceTagMessage. A new InvalidParameterValueException is added and
thrown if a tag key or value is not acceptable. Bindings for tags have
been updated.

Entity classes are updated with a reference to their tags (to support
cascading deletion). Tag instances have been added for each entity type
(SnapshotTag, VolumeTag, etc). AccountMetadata now allows
"createUniqueName" to be overridden in case the default implementation
is not sufficiently unique, this is overridden by Tag to include the
account name, resource type, resource identifier and tag key.

CloudMetadata is updated to include TagMetadata (type "tag"). PolicySpec
is updated to include a new resource for tags.

Entities has been updated to include a count method to allow counting
the number of entities that match an example object.
Framework for filtering on resource properties (EUCA-4664)

Support is added for EC2 filtering of resources.

The Filter data object is moved to Messages from Unimplemented. Existing
messages that use filters are updated to use the correct parameter name
and annotations.

Filter, Filters and FilterSupport classes have been added as the
filtering API and CloudMetadatas updated as a facade for general
resource filtering. Filter is a filter instance which can be used in a
service class, Filters is the registry for obtaining a Filter and for
any utility methods. An instance of FilterSupport is created for each
resource that supports filtering, these will be discovered during boot
by FilterDiscovery.

Entities has been updated to include a new query method that accepts a
user provided Criteria.
Add filtering on resource properties for addresses (EUCA-4665)

Address filtering is supported by the new AddressFilterSupport class in
Addresses. A FilterFunctions enum is added to Addresses with a value for
each (String) property. AddressManager is updated to support filtering
via the new CloudMetadatas API, there is no DB filtering for addresses.
The AddressFilterSupportTest is added to provide coverage for all
Predicate filters.
Add filtering on resource properties for security groups (EUCA-4679)

NetworkGroup filtering is supported by the new NetworkGroupFilterSupport
class in NetworkGroups. FilterFunctions and FilterSetFunctions enums are
added with implementation of filter value mapping functions for single
and multi-valued properties respectivelly. NetworkGroupManager is
updated to support filtering via the new CloudMetadatas API. The
NetworkGroupFilterSupportTest is added to provide coverage for all
Predicate filters and to perform sanity checks for DB filters.
Framework for filtering resources using tags (EUCA-4653)

Add support code for filtering resources using tags. FilterSupport and
the associated configuration builder now allow filtering by tags to be
configured. FilterSupportTest is updated to provide unit test coverage
of tag filtering configuration.
Resource tagging fixes for tags on images and update to existing tags.
Add filtering by resource tags for snapshots (EUCA-4662)

Snapshot filtering using tags is now supported via the new
SnapshotFilterSupport class. The SnapshotFilterSupportTest provides unit
test coverage of the tag filtering configuration. The SnapshotManager is
updated to use filters when describing snapshots.
Resource tagging, fix unit tests for filtering.
Add filtering by resource tags for images (EUCA-4652)

Images filtering using tags is now supported via the new
ImageInfoFilterSupport class. The ImageInfoFilterSupportTest provides
unit test coverage of the tag filtering configuration. The ImageManager
is updated to use filters when describing images. CloudMetadatas is
updated to support filtering using privileges without owner checking.
Add filtering on resource properties for snapshots (EUCA-4680)

Snapshot filtering by properties is added to the SnapshotFilterSupport
class. A FilterFunctions enum is added to Snapshots with a value for
each (String) property, and a FilterDateFunctions enum for the date
property. The SnapshotFilterSupportTest is updated to provide coverage
for all Predicate filters.
Add filtering on resource tags for instances (EUCA-4655)

Instance filtering using tags is now supported via the new
VmInstanceFilterSupport class. The VmInstanceFilterSupportTest provides
unit test coverage of the tag filtering configuration. VmControl is
updated to use filters when describing instances. VmInstances is updated
to allow use of a Criteria / alias Map for instance lookup (for database
filters)
Add filtering on resource properties for tags (EUCA-4682)

Tag filtering by properties is supported by the new TagFilterSupport
class. The TagFilterSupportTest is added to provide coverage
for all Predicate filters and database filters. The TagManager is
updated to use filters when describing tags. Transactions is updated to
include a filter accepting a Criteria / alias Map (for database filters)
Add missing license headers.
Add filtering on resource properties for regions (EUCA-4676)

Region filtering by properties is supported by the new
RegionFilterSupport class. The RegionFilterSupportTest is added to
provide coverage for all Predicate filters. The ClusterEndpoint is
updated to use filters when describing regions. Framework classes are
updated to allow for non AbstractPersistent/CloudMetadata resources.
Add filtering on resource properties for key pairs (EUCA-4674)

Key pair filtering is supported by the new KeyPairFilterSupport class in
KeyPairs. A FilterFunctions enum is added to KeyPairs with a value for
each (String) property. KeyPairs is updated to allow use of a Criteria /
alias Map for key pair listing (for databasefilters). KeyPair manager is
updated to support filtering via the new CloudMetadatas API.
KeyPairFilterSupportTest is added to provide coverage for all
Predicate filters and validation of filtering configuration.
Add filtering on resource properties for availability zones (EUCA-4666)

Availability zone filtering by properties is supported by the new
AvailabilityZoneFilterSupport class. The
AvailabilityZoneFilterSupportTest is added to provide coverage for all
Predicate filters. The ClusterEndpoint is updated to use filters when
describing availability zones. A new constructor is added to Cluster to
allow test use without requiring an active persistence context.
Add filtering on resource properties for bundle tasks (EUCA-4668)

Bundle task filtering is supported by the new VmBundleTaskFilterSupport
class in VmInstances. A BundleFilterFunctions enum is added to
VmInstances with a value for each (String) property and a
BundleDateFilterFunctions with a value for each Date property. VmControl
is updated to support filtering via the new CloudMetadatas API.
VmBundleTaskFilterSupportTest is added to provide coverage for Predicate
filters and validation of filtering configuration.
Fix naming of VmInstanceFilterSupport test class