Create container holding free leases for lease pre-allocation feature
The following document: https://gitlab.isc.org/isc-projects/kea/-/wikis/designs/Backend-Assisted-Lease-Selection-design describes how we're going to deal with the leases pre-allocation to improve performance of allocation when the pools are nearly exhausted. The key aspect of this design is how to store the free leases. This issue is meant to come up with a PoC of the container for free leases that would meet (or at least get close to) the following requirements:
- it must be possible to pre-allocate only a part of the pool and allocate more on demand,
- the offered leases must be returned in "random" order,
- the lease reclamation process should return the leases into this container efficiently,
- reclaimed leases should go to the back of the queue for the pool which they belong to (in case they belong to a pool),
- the state should be stored within the container, i.e. externally I should only call "give me a new lease and this is my 4th attempt"
- the container must not be tightly coupled with the Memfile backend so as it can be re-used as a lease pre-allocation mechanism for other backends