Make subscribe_sqs_queue idempotent

This patch changes the sid from being a random UUID4 string to an md5
hash of the combined topic & queue ARN.  Since the Sid is now a known
value we can check to see if a Statement with the given Sid already
exists.  If it does, do not add it again.

The reason for this is that as subscribe_sqs_queue is it isn't
idempotent.  It will add the same statement (with a new Sid) repeatedly
until you hit the limits of the SQS Policy (20 statements, 8192 bytes).
Clean up some unnessary if statements
Initial integration tests for idempotent subscribe

For https://github.com/boto/boto/pull/1414

There is occasionally a failure on the first assert in
'test_idempotent_subscribe' where Amazon hasn't yet propogated the
policy change when we do the get_attributes after the first subscribe,
so it still has 0 statements in it.  I'm not sure what the best way to
deal with this is.
Added sleeps to allow amazon time to propogate

The policy statements would some times not be propogated by the time we
went looking for them.  While I hate inserting time into the tests, this
seems to be the safest way.  I believe 3 seconds should be enough (1 was
enough in all my tests).
Merge remote-tracking branch 'phobologic/sns_subscribe_idempotent' into develop