CLOUDSTACK-1126: [EC2 Query API] RunInstances ignores the UserData input parameter

When EC2RunInstances is called with UserData parameter, the parameter is not propogated to CS
CLOUDSTACK-1127: [EC2 Query API] DescribeSecurityGroups, support for additional filters

Add support for filters ip-permission.group-name and ip-permission.user-id
CLOUDSTACK-1128: [EC2 Query API] DescribeAvailabilityZones, support for message filter

Add message in the response element of EC2DesrcibeAvailibilityZones. Add support for filter 'message'.
The value of 'message' should be set to the allocation_state of the zone
Code cleanup
CLOUDSTACK-1129: [EC2 Query API] DescribeVolumes, add support for filter attachment.status

1. If volume is attached to a VM set attachment state based on the state of the VM it is attached to.
Running, Starting, Stopped -> Attached
Starting -> Attaching
Destroyed, Error -> Detached
2. If volume is not attached to a VM set attachment state as 'detached'
CLOUDSTACK-1125: [EC2 Query API] Permission denied exception when a parameter value contains space

Convert space characters in the parameters to %20 while forming a query string after url-encode because java.net.URLEncoder performs application/x-www-form-urlencoded-type encoding and not percent-encoding. According to RFC 3986 as required by Amazon, we need to percent-encode.
CLOUDSTACK-1131

[EC2 Query API] RunInstances allows negative values for paramters 'MinCount' and 'MaxCount'
Add parameter validation to ensure MinCount is greater than 0 and MaxCount is great than or equal to MinCount
CLOUDSTACK-1133: [EC2 Query API] In StopInstances add support for parameter 'force'

Propagate this parameter to CS to force stop an instance
CLOUDSTACK-1135: [EC2 Query API] AuthorizeSecurityGroupIngress and RevokeSecurityGroupIngress fails when icmp code and type is provided

For AuthorizeSecurityGroupIngress RevokeSecurityGroupIngress query calls parse and set the icmp code and type