buffers: Allow for the buffer cache to be expandable.
Some of our platforms have no userspace mapped when in kernel space. That
prevents them putting the discard code/data into the userspace area during
boot and binning it when loading init over the top.
Instead we allow the buffer cache to grow. The platform can then put the
buffer cache just before the discard area, and once the root fs is mounted
and we are ready to load init we can convert the entire discard area into
cache pages.
Even better we only need enough buffers to mount the root fs to be present
at boot time (2 or 3).