Introduce shadow resources for NeutronCommands

With the acceptance of the v2 LBaaS object model we will be required to
support both the original v1 (soon to be deprecated) and v2
side-by-side. Not surprisingly these two modelsshare a number of object
types (ie. pools, members, etc.) In order to handle this overlap of
object names, the API prefixes v1 with /lb whereas v2 is prefixed with
/lbaas.

This presents a problem for python-neutronclient in that resource name
alone (until now) was adequate for the string interpolation that helps
derive the method name to be called. Now that we have, for instance,
two different "pool" objects, we need a way to handle each uniquely.

Therefore, in order to maintain backwards compatibility, and minimize
complexity, this change introduces the concept of a shadow resource.
This shadow recource is used to direct the client at the correct paths
and methods to call internally, get still leverage the same logic that
has enabled resources to be manipulated by the de facto resource name.

Shadow resources are only necessary when an API is in this particular
type of scenario: the deprecation of a previous and overlapping former
API. Otherwise, new and existing API's can continue to use the same
logic as before.

This change also moves the 'resource' attributes from the Neutron
subclasses into NeutronCommand itself  as they were common to all the
subcommands already.

Change-Id: I69270debe25aac2659977d66d7887154ef0cdddf
Partially-implements: blueprint lbaas-api-and-objmodel-improvement
Merge "Introduce shadow resources for NeutronCommands"