vkd3d: Store descriptor pools in the device object using the base descriptor counts as key.
This implementation will leave unused descriptor pools hanging around if all root signatures using a particular set of counts are released before the allocator(s) are reset, and those counts are never used again. But the current code probably has a much greater potential to waste device memory. As mentioned in a code comment, a garbage collector could be added later.