Move floating ip db access to calling side.

Most of the allocation for floating ips can be done on the calling
side, including finding the proper host to send the message to.
This saves us from making an rpc call for allocate/deallocate and
makes sure that we only need 1 call for associate/disassociate by
finding the proper host to send the message to immediately.

Part of blueprint optimize-nova-network

Change-Id: I6ec65b1f3e8d00cab778b10eec620760886567e0
Optimize rpc handling for allocate and deallocate

If we are in multi_host mode we can save an extra rpc call by
sending the message to the instance host the first time. This
will prevent nova-network from having to resend the message
to actually allocate the fixed ips.

Part of blueprint optimize-nova-network

DocImpact: before multi_host only affected the network create
commands, but now it can be used at run-time to optimize the
path for allocating and deallocating fixed_ips, so it is important
to set it if you are using multi_host networks.

Change-Id: Ide48e0adb2e1051e31965c9a8422b27c1a9c40b3