Fix Flavor object extra_specs and projects handling

The Flavor.save() method was not properly handling extra_specs
and projects when deletions occur, and was doing a read/edit/save
cycle, which could involve some stale data.

This patch keeps the object-y interface to adding/removing things
from those lists, but ensures that they're added/removed individually
on the backend. The save() method is strange on Flavor, in that only
these two sets of data are actually mutable. Because of this, it's
fairly convenient to make that method no longer remotable and
break the actions into two new remotable methods that take fine-
grained lists of add/remove tasks.

Note that Flavor was not used over RPC in any previous release,
so the remotability change doesn't really affect anything. However,
if a client were to issue a remoted save() call, it would still work
and would still have the same (broken) behavior as before, where
deletes don't propagate and we just always add/update every key.

Related to blueprint compute-manager-objects-juno

Change-Id: Ic4439e05b9c0b8274e54768cbd7949aced45cc69
Object-ify APIv2 flavorextraspecs extension

This makes the flavorextraspecs extension use the Flavor object.

Related to blueprint compute-manager-objects-juno

Change-Id: I28bcc24382f1e993b98b3f7342fed53c9ae85cbf
Object-ify APIv3 flavor_extraspecs extension

This makes the APIv3 flavor_extraspecs extension use the Flavor
object instead of going direct to the database.

Related to blueprint compute-manager-objects-juno

Change-Id: Ibe9211fb944bb64f722e2417725e29506b17ee30
Merge "Fix Flavor object extra_specs and projects handling"
Merge "Object-ify APIv2 flavorextraspecs extension"
Merge "Object-ify APIv3 flavor_extraspecs extension"