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
I read the commit message, but I have trouble understanding how this didn't work before and how this is selecting now. Can you explain it to me? I have trouble understanding how the example wouldn't return /31 first.
```
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
```