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
Having the code in this new transaction is the believed core fix for this PR