Shared IP API

Squashed work from John Perkins <john.perkins@rackspace.com> and Thomas Maddox <thomas.maddox@rackspace.com>

- An API to allow an already shared IP address to be added to or removed from another port.
- An API to allow an IP address to be "shared" instead of "configured" or "owned"
- Filters on db.api.ip_address_find should be updated to allow searching by other attributes, like the port_id. Currently it only supports "ip_shared" (changed ip_shared to address_type=shared') and "device_id"
- Any time we show ports to the caller, we must set the "enabled" flag if the port is the one the IP is currently assigned to. A change already exists in Nova anticipating this change.
- Only New IPs can be marked as "shared" at the time of their creation
- IPs cannot change from shared to not shared, or vice versa, at any time after creation until deallocated.
- Remove device_ids attribute from /ip_addresses
- Change from 'shared' boolean attribute to 'type' string attribute with the following valid values: 'shared', 'fixed', and 'floating'.
- Move address types to constants for consistency
There's plenty of naming fun if you dig through the code. The number one for me being the use cases between the plural and the singular, and which to use where. We hit the mark most of the time, but not always.

Anyways, my vote is still for VAR = "var", for ease of reading. If they're the same, then there's no doubt as to what it is. Up to you all.