util,nir: add and use a freelist allocator for NIR instructions
This is a version of !524 (closed) rebased on !11776 (merged)
Seems RADV spends a lot of time in malloc()
/free()
during shader compilation, and this MR helps a lot with that
This gave me a -15% to -33% change in compile time depending on thread count and CPU. !524 (closed) was intended to improve performance with multithreaded compilation, but this seems to still help with a single thread.