merged SecurityGroupHelper

Squashed commit of the following:

commit bea0aec5906d3c2c82264bf2c167d8371d9aae2f
Author: James Light <james.light@huffingtonpost.com>
Date:   Mon Jun 2 11:10:09 2014 -0400

    Try to tag group twice on first creation

    failing to tag the group that we just created (happens because of AWS
    API inconsistencies) makes the group unable to be found on enext run of
    the module, so the group then must be deleted manually.

    for now, I just try to tag twice.
    A better solution may be to try to look up by tag and if that fails, try
    by name and then add the tag, or just ditch tags altogether, but I do
    think an explicit tag is a good idea for later tools integrating w/ Heet

commit dbd3bf47dd7945a1db4e3c6da349a4dc42be6919
Merge: 73c041f 46c4e01
Author: James Light <james.light@huffingtonpost.com>
Date:   Mon Jun 2 10:45:46 2014 -0400

    Merge branch 'sg_refactor'

    Conflicts:
    	awsheet/helpers/instancehelper.py
    fixed conflict for handling of Null instance tag setting

commit 73c041ff07d06edbbb5112e60e3a5a7026c92941
Merge: c5eb81f 3d674a6
Author: James Light <james.light@huffingtonpost.com>
Date:   Mon Jun 2 10:41:45 2014 -0400

    Merge branch 'master' of https://github.com/adler/awsheet

commit 46c4e01c5e09e43cb70cedc45781fbdb92017cf4
Author: James Light <james.light@huffingtonpost.com>
Date:   Mon Jun 2 10:40:22 2014 -0400

    added converge_dependency support to destroy

    now groups that are included in other groups will try again to delete
    themselves after all of the other groups have run destroy, thus
    deleteing the rules that refer to us and allowing us to delete
    ourselves.

commit 18fd2acba34a586d16381c2680201cde6d8b01e6
Author: James Light <james.light@huffingtonpost.com>
Date:   Mon Jun 2 06:36:33 2014 -0400

    added a decoy rule return on destroy

    avoids an error of dereferencing None

commit 9d15e9b597c752ab0e842c8c6c416d6951f02c6c
Author: James Light <james.light@huffingtonpost.com>
Date:   Mon Jun 2 06:03:12 2014 -0400

    a few bug fixes

    groups that change out of band are now re-converged automatically

commit 6e61415353e6d8c9dc3bd4ffbc869c24ca110d2e
Author: James Light <james.light@huffingtonpost.com>
Date:   Mon Jun 2 05:40:06 2014 -0400

    numerous design and bug fixes

    Basically, this actually is fully working for the first time as of this
    commit

commit 182354e005a15fb5b0d57ac2610ec4fe42b9bc93
Author: James Light <james.light@huffingtonpost.com>
Date:   Mon Jun 2 05:35:46 2014 -0400

    fixed set_tag bugs, added wait_until_terminated

    there were some bugs in the way that tags were set such that on destroy,
    if the instance didn't exist it would still try to set a tag and thus
    generate a cascading exception

    Also fixed a design error in the destroy() method. destroy() now waits
    until the instance enters the terminated state. Previous to this, any
    other resources that expected this instance to be destroyed would fail
    as destroy returned before the instance had exited 'shutting-down'

commit 1c4f550e62dbc8fc0bc9e22dea03baae3d49f59c
Author: James Light <james.light@huffingtonpost.com>
Date:   Thu May 29 17:26:07 2014 -0400

    removed commented out code for old way of normalizing 'self'

commit b229a8808438d7e4adf00041c53f35ed32c0110a
Author: James Light <james.light@huffingtonpost.com>
Date:   Thu May 29 13:05:39 2014 -0400

    ignore my todo files

commit 8c84a8f2cf67c093bf3866afb47c33bf0afe8b97
Author: James Light <james.light@huffingtonpost.com>
Date:   Thu May 29 12:41:06 2014 -0400

    working past second converge

    still has a bug in the normalizing of local rules.
    we need to look up resource references in the normalization process
    only SGs that can't be found should be normalized to resource
    references.

    Alternatively, when we get the remote rules, we need to normalize the
    rules so that the source groups are normalized into resource references

commit 2528de19eaa78e8f567f9df498d714e9f475b86f
Author: James Light <james.light@huffingtonpost.com>
Date:   Wed May 28 17:01:23 2014 -0400

    security group helpers pass first convergence cycle=

commit 8dfe54e38a98d2c9d4496b3f915c9dd7ad1c95a4
Author: James Light <james.light@huffingtonpost.com>
Date:   Wed May 28 16:11:43 2014 -0400

    desperately trying to unfuck SGH

commit c5eb81f33431fb4307b356f8600477dfd2d064f8
Merge: 0ce9619 01fde04
Author: James Light <james.light@huffingtonpost.com>
Date:   Fri May 23 12:18:41 2014 -0400

    Merge branch 'master' of https://github.com/adler/awsheet

commit b26efefbe3e05ca70c8e89960061988dabfe9e68
Author: James Light <james.light@huffingtonpost.com>
Date:   Wed May 14 14:28:09 2014 -0400

    in progress commit

commit 0ce96194202d596b83f5e3746e016fb4be659feb
Author: James Light <james.light@huffingtonpost.com>
Date:   Mon May 12 13:22:08 2014 -0400

    changed the message printed when destroying

commit 3cd3b0760f99eb5654c1d492f6900313c9636ff1
Author: James Light <james.light@huffingtonpost.com>
Date:   Mon May 12 13:21:04 2014 -0400

    log if we can not set tag on instance

commit 2da514b79ef4ced08c33d3e356b51b8dbdbff6ba
Merge: aac2063 afa9caa
Author: James Light <james.light@huffingtonpost.com>
Date:   Wed May 7 11:46:27 2014 -0400

    Merge branch 'master' of https://github.com/adler/awsheet
    local merge of new SGHelper module + resource ref code

commit aac20637a1a33a680e08a48f51679e3bea6a5d59
Author: James Light <james.light@huffingtonpost.com>
Date:   Fri May 2 12:31:08 2014 -0400

    fixed many bugs

    SecurityGroupHelper module has been fixed so look up rules and key them
    correctly

    added a utility function to heet core to check if something looks like a
    correctly formatted resource reference

commit d0e7e05a70c55cf18b05d6ddd718623693eef128
Merge: 5124fda a4f879d
Author: James Light <james.light@huffingtonpost.com>
Date:   Fri Apr 25 17:34:50 2014 -0400

    Merge branch 'sg_refactor'

    Adding in SecurityGroupHelper orchestration and at exit reconvergence of problematic rules.
    Basically, rules that refer to other security groups that aren't declared yet, and thus
    don't exist in Amazon yet, we wait to converge those ones until after they have declared
    themselves at which point the script exits and calls the functions registered to run at
    script exit time which will reexamine the rules that failed, rule by rule and try to converge
    again.
    The assumption is that by now all the security groups have been declared, so it better be able
    to find them by the end if they should be referring to each other by a resource reference key.

commit a4f879da502548817dd213d23861e6b0e40a9e64
Author: James Light <james.light@huffingtonpost.com>
Date:   Fri Apr 25 17:32:25 2014 -0400

    Core now supports named resources and resource 2nd stage convegence

    Resources can now refer to each other by the heet base name preceeded
    with an '@' character. As well, resources have a way to register a
    converge_depedency() method that will run at program exit and can be
    used to try to reconverge certain attributes that could not be converged
    the first time around for some reason.

commit 148c3b783818ee180795009028aec1de3802803a
Author: James Light <james.light@huffingtonpost.com>
Date:   Fri Apr 25 17:30:19 2014 -0400

    Added ability to refer to self and to other SG Helpers

    Minor orchestration added to allow a rule to be converged again at a
    later state.