NeutronIPAM as IPAM subsystem

This implements NeutronIPAM that has been proposed in the
https://blueprints.launchpad.net/neutron/+spec/neutron-ipam.

The goal is to create NeutronIPAM as a pluggable IPAM subsytem
so that any 3rd party vendor can create her own IPAM drvier
by inherting interfaces defined in NeutronIPAM and adding
the vendor specific behaviors that utilize the vendor's
own external IPAM backends.

IPAM subsystem allows a 3rd party IPAM driver to extend the
capability of managing networks/subnets, fixed/floating IP
addresses, and DNS records.

IPAM subsystem creates "ipam" folder under neutron.
The folder contains base.py that provides interfaces for
IPAM management classes.

There are four interface classes defined in the base module.

*IPAMManager* is the main class that defines IPAM driver
behaviors and make use of business logics that are defined
in the three controller classes: IPAMController,
DHCPController, and DNSController

IPAMController enables network management capabiltiy,
DHCPController DHCP management, and DNSController
DNS record managements.

"drivers" folder is created right under the "ipam".
There exists "neutron_ipam" module as the default
neutron driver. The module has NeutronIPAM that
implements IPAMManager, NeutronDHCPController that
implements DHCPController, NeutronDNSController that
implements DNSController.

A 3rd party vendor can create her own driver by creating
a vendor folder under "drivers" and create a driver by
implementing IPAMController, DHCPController, and
DNSController and also by inheriting NeutronIPAM,
NeutronDHCPController, and NeutronDNSController classes.