Fixes #29 and #31

Now honors "do_not_use" on subnets, effectively ignoring them. Also, as
per issue 31, max_allocation is honored correctly so long as we 1) know
where to port max_allocation to (the quotas table) and 2) always create
the quotas table. The way to do that is to import the quota db driver in
the models regardless of whether we're using the conf driver or the db
driver. This is seemingly the blessed method upstream, so we'll follow
suit.
Merge pull request #33 from Cerberus98/do_not_use_merge

Fixes #29 and #31
Enable filtering on segment id

Pass a tenant id as an argument in
neutron subnet-list --segment-id={TENANT_ID}

Useful for listing blocks in a cell.

Fixes RM#4318
Merge pull request #37 from rackerlabs/segment_id_filter

Enable filtering on segment id
Fixes #36

segment_id now defaults to NULL as expected.
Merge pull request #38 from Cerberus98/master

Fixes #36
Fixes #34

A previous patch updated segment_id to correctly be treated as a list,
but inadvertently filtered on tenant_id instead of segment_id in the
subnets table.
Merge pull request #39 from Cerberus98/master

Fixes #34
RM3889

- change IPPolicy to use CIDRs for exclusion
- changed IPPolicyRule to IPPolicyCIDR
- allow offsets still, but convert them to CIDRs
- default CIDRs excluded are network ip and broadcast ip, these are detected in code.
- no longer allow configurable default policies becase we can't detect if subnet is IPv4 or IPv6

if user passes in offset/length they are converted to CIDRs with 0.0.0 prefixes (i.e., offset: 0, length: 2 converts to 0.0.0.0/31).  When creating any new policies, those offset/length CIDRs are converted to match the subnet and then checked to make sure they fit into the subnet.  If they do not they will throw an exception.  This applies also for any regular CIDR exclusions. If they do not fit into the subnets they will throw an exception.

We are more strict about only allowing a user to provide either network_ids or subnet_ids.  We will throw an exception otherwise.