Add basic Cloudformation support

Added basic Cloudformation support. Support for most of the existing resources in Moto is added.

No stack.update() yet. The business logic around which resources to update/create/destroy is pretty complicated and I want to think about it a bit.

No stack resource events yet, but they could be added easily.

I'm fairly sure I'm missing some logic around parsing attribute values that use things like `{"Ref": "OtherItem"}`, but I didn't want to overcomplicate the first version without getting some use cases.

Also added basic IAM support since it is used in a lot of Cloudformation templates (probably should have done this as a separate PR). I needed to add some additional VPC resources as well.

If we find a resource in a template that we haven't implemented yet, we just log an error. I originally raised an exception, but I think this will be more useful.

We currently just ignore CloudFormation resources(`AWS::CloudFormation::WaitCondition`, `AWS::CloudFormation::WaitConditionHandle`). That made the most sense to me.