Shared ip and first gen mac address range columns

These columns are needed for implementing shared ips and migration of
first-gen mac addresses.

RM#7675
RM7831

Fixes #166

Implements attribute checking for ports, networks and subnets for both
create and update methods.
Merge pull request #168 from Cerberus98/rm7831_merge

RM7831
RM7831 addendum

Amends #166

Missed using filter_body in subnets.py
Merge pull request #169 from Cerberus98/master

RM7831 addendum
Catch duplicate exception on subnet_id, address

RM7985
RM7980

A commit back in may introduced filtering on "do_not_use" when selecting
IP addresses from the database. Unfortunately, this had the unintended
side-effect of applying a cartesian product to the result set, crushing
neutron DB servers in the process. This patch refactors the join to be
more sensible, as well as an inner join for safety.
Merge pull request #170 from Cerberus98/master

RM7980
Merge pull request #171 from asadoughi/RM7985

Catch duplicate entry exception when generate_v6 yields address already ...
Fixes RM7946

Now that we have alembic migrations, the need for quark to automatically
create the schema is no longer required. This commit
removes two lines that cause sqlalchemy to create the schema in the
database if one does not exist.

Additionally, quite a few port and subnet tests were accidentally
leaking past the test abstraction and hitting the database. This patch
unearthed that problem, so several tests were modified to fix the issue.
Merge pull request #173 from Cerberus98/rm7946_merge

Fixes RM7946
Truncate IPPolicyCIDR's outside of Subnet._cidr

RM7210
Fixes RM8003

Previously, the logic to check for the existence of an allocated IPv6
address mistakenly included the tenant_id of the requesting tenant. If
this particular section was executed, the ip_address_find would return
None for the address, causing the update section to be skipped and the
ip_address_create to be executed. Since the IP address already may have
existed, the create would raise on a duplicate record, causing Quark to
only infrequently trigger the alternate RFC3041 IP generation logic.

Additionally cleans up a few of the related tests that had some
copy-paste.
Merge pull request #174 from Cerberus98/rm8003_merge

Fixes RM8003
Ensure exception arguments are handled if they exist

RM6485
Merge pull request #177 from jmeridth/fix_handling_of_exception_args_on_network_delete

Ensure exception arguments are handled if they exist
Quote tenant_id parameters to be strings

Queries did not match when queried as integers with sqlite 3.8.5
Merge pull request #178 from asadoughi/quote_tenant_id

Quote tenant_id parameters to be strings
Merge pull request #159 from asadoughi/ip_policy_inside_subnet

Truncate IPPolicyCIDR's outside of Subnet._cidr
Ensure default IP policy on subnets

* Added API validation
* Added database migrations

RM7212