[Brightbox] Clean up Cloud IP mapping code

When passing an object that responds to `identity` which is all of our
resources, we can pass the resource's identifier in to the API call to
make it easier to use without maintaining a list of classes.

Server's need to use the interface for the destination so they override
a new `mapping_identity` method which is picked up first.

Anything else (such as a String identifier) is passed directly to the
API request as before.
Merge pull request #2435 from brightbox/clean_mapping_code

[Brightbox] Clean up Cloud IP mapping code