Security Groups: Fix for filtering support.

This fixes #195.

There were two nested problems:
* The "to_attr" conversion checked "attr" (always None) instead of the passed "filter_name" param
* The foreach/else loop had a break on "if not ret" instead of "if ret" (proper) -- the "break" action is what causes the "else" clause to be skipped. So "if not ret: break" meant that a True match would not break, thus entering the else clause, and the True match would result in a False verdict.

The tests passed because they only checked for the number of results, and in each case the number of groups which did not match was the same as the number of groups which did match. I've added an explicit id check to the result to make sure the right group is returned.

My fix involved a minor refactor which no longer uses a foreach/else loop -- between my having to look up the semantics to make sure I wasn't crazy, and the logic having a bug in the first place, I think it's a bit more complex than we need here.

Bonus: I also added a couple of lines for the "vpc-id" filter while I was in there.