[SPARK-3405] add subnet-id and vpc-id options to spark_ec2.py

Based on this gist:
https://gist.github.com/amar-analytx/0b62543621e1f246c0a2

We use security group ids instead of security group to get around this issue:
https://github.com/boto/boto/issues/350
I guess that we need to have separate logic for the VPC / non-VPC security group rule creation, since according to Amazon's [Differences Between Security Groups for EC2-Classic and EC2-VPC](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html#VPC_Security_Group_Differences) guide, when using EC2-VPC:

> When you add a rule to a security group, you must specify a protocol, and it can be any protocol with a standard protocol number, or all protocols (see Protocol Numbers).

In the non-VPC case, I guess that the

```
master_group.authorize(src_group=master_group)
master_group.authorize(src_group=slave_group)
```

lines are authorizing _all_ inbound traffic from instances belonging to `master` group, regardless of the protocol / ports of that traffic.

However, it looks like the VPC case here only authorizes TCP traffic.  I don't think that we rely on UDP traffic anywhere, but for consistency's sake it would be good if both the VPC and non-VPC branches here created equivalent rules.