Check for server.addresses['public'] before pushing new value into it.

When running knife-openstack against a private
install of openstack folsom, instances do not
populate server.addresses['public'].

The result was an undefined method exception
being raised when trying to push the floating ip
address to server.addresses['public'].

This fix checks for the existence of the 'public' key
first, creates it if it does not exist, then
pushes the floating IP into the array.