Ensure code will mark currently fully allocated subnets as full

- unit test that logic is setting next_auto_assign_ip to -1 when subnet is fully allocated
- functional tests validating the same
- fix subnet_find_allocation_count
    - was just ordering by used ip count, instead of what is remaining.
    - example, a /31 and /32 could both have 0 ips used, but their remaining is 2 and 4, so the /31 should be first returned
- use sqlalchemy desc (descending method) instead of string

RM8677
Because if both the /31 and /32 had no used IPs, count would be zero and ascending didn't matter.  Their order would be random.  That meant that it was returning the /32 first sometimes.  Change the code back and run the functional tests I added a few times.  They will show you.