Update floating ip deletion code

The previous version of the ip deletion
code was problematic b/c it was looking for
unassigned ip addresses and deleting them.

It was assumed that b/c the VMs were deleted
first (and leaving floating addresses stranded)
that all unassigned address could be cleaned up.

After further thought, this could create a race
condition where ip addresses that are created,
yet unassigned (by the build process) might
get deleted as well.

This code updates the floating ip deletion as
follows:
- performs deletion before vms are deleted
- gets the address and id of subnet related to project
to ensure that correct address is disaccoiciated and
deleted.