Refactor and improve the EC2 Elastic IP module.

This includes the style cleanups from #325. I separated them out into separate requests as this is a larger change.

This refactor substantially reduces the number of long boto calls. Additionally, it will more intelligently match existing Elastic IP associations when an `instance_id` is provided and will skip unnecessary changes. (So providing an `instance_id` causes this module to be idempotent).

It also (I believe) obsoletes the need for `wait_timeout` functionality, as the `address` object does not need to be searched for repeatedly.