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.
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.
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.
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
Merge branch 'master' of https://github.com/adler/awsheet
local merge of new SGHelper module + resource ref code
log if we can not set tag on instance
changed the message printed when destroying
in progress commit
Merge branch 'master' of https://github.com/adler/awsheet
desperately trying to unfuck SGH
security group helpers pass first convergence cycle=
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
ignore my todo files
removed commented out code for old way of normalizing 'self'
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'
numerous design and bug fixes

Basically, this actually is fully working for the first time as of this
commit
a few bug fixes

groups that change out of band are now re-converged automatically
added a decoy rule return on destroy

avoids an error of dereferencing None
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.
Merge branch 'master' of https://github.com/adler/awsheet