Adds new and refactors old unit tests

This commit adds unit tests for the LaunchConfig and Bootstrap classes.  It also
pulls common config and functionality into the overseer_spec_setup file.
It also happens to add a new test for the get_definition function, which should
return false if there is no directory for a definition.
Fixes the verify_security_groups method, as it was totally broken.

When moving this out into a module, the parameter was called groups, but the
internal usage of that was never changed to match.  It totally works now.
Fixes bug where gems without a version didn't have proper install string
Changes normalize_security_groups to no longer modify passed in argument inplace
Changes what get_definition and load_definition return.  Adds the die function

load_definition now returns an empty hash if there is nothing to load.
get_definition now returns false if there is no definition to return.
Adds the die function which writes to the overseer logger then exits
Overseer now quits with a message when given a group that doesn't exist.
Overseer now creates an autoscaling group on sync if it doesn't exist

This new functionality assumes calling sync means you want the group created
if it doesn't exist.  This commit also stops overseer from exploding when
trying to get differences for an autoscaling group that doesn't exist.  Now it
just reports everything as a difference if the remote group doesn't exist.