added extra checks on amqp messages and shoalagent.

public/private and external ips are not required fields anymore, since
some squids may have a private ip and not a public ip and vise-versa, but
either public or external must be set or it will not be tracked.

fixed shoal_agent so it will not exit if shoal server is not running,
also shoal_agent will continue to run if the rabbitmq server is down. it
will keep trying to send the message every INTERVAL.

if public and external ip is not set in shoal agent it will not send an
amqp message, as one of the must be set to track its geo location.

added hostname and external_ip data fields to SquidNode class.

added a bit of code for private ip squids. Since they may not have a
public IP and shoal server may not be running when shoal agent starts,
neither external or public ip could be set, if neither is set it will
try and establish an external ip every INTERVAL seconds.