public key of server.addresses not always defined

When running knife-openstack against a private
install of openstack folsom, instances do not
populate the public key of addresses.

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.