Generalized code cleanup

I apologize for the wall of code. I didn't really want to send you a PR that didn't contain fully working code. Also feel free to reject the style changes (quotes/ruby1.9 hash syntax, etc) if you don't want to use them. They are all one commit and should be fairly easy to remove. Just trying to keep consistency.

One thing this PR changes in a big way (and was hard not to fix along the way) is how existing groups are validated before the cookbook attempts to add a new group. Where before the code was just making a blanket comparison of the different group properties to make sure they were exactly the same, it now tries to use some fine-grained comparison (using the 'ipaddress' library, for example) to figure out if Fog/AWS is likely to reject the request for reasons of "duplicate rule."  It might actually be a good idea to handle the "duplicate rule" error in stride rather than blowing up, but I didn't change that behavior.