Get rid of some old cruft and add a failsafe for M_WAITOK which guarentees
that malloc() will not attempt to reuse pages from the VM page cache if
called with M_WAITOK from a preemption.
If M_WAITOK is used in a malloc called from a preemption, and we would block,
do an initial yield instead of blocking. This does not effect sequencing
of the preemption since either will cause the preemption to return and the
blocking thread to be scheduled normally, but yield as a first go will get
the cpu back more quickly.