New IP Addresses collection

A new ipaddresses collection with state methods to create and fetch IP addresses. Removing a subnet also removes associated IP addresses.

IP addresses are created in state Unknown, but can be set to Allocated or Unavailable. This will be used when we are picking addresses for machines (and containers) and attempting to allocate them with the provider.