Use weak ref to avoid deleting fip namespace through agent
By using a weak ref in the agent to keep track of the fip namespaces,
we avoid having to call a method directly on the agent to delete a fip
namespace. When the last router removes the last floating ip, the
fip_ns is marked destroyed and the router's strong reference is
removed. This allows the garbage collector to reap it. When the
agent goes looking for the fip namespace instance again, it will check
to see that it has not been garbage collected and that it has not been
destroyed before using it.
The goal here is to avoid having to ask the agent to delete a fip
namespace. We know to delete a fip namespace when all of the floating
ips are gone. We delete floating ips in the context of processing a
router. So, having to call back out to the agent to destroy the fip
namespace is preventing some of this code from being moved in to the
router context.