Fix elastic ip association with VPCs

Rework of #1310 with unit and integration tests so that the work around noted in #1310 is no longer needed.

If someone knows of a better way to handle integration test environment tear down I am all ears. Using the usual `addCleanup` doesn't work since VPC teardown has to happen in a specific order.