Fix the cache flushing code, by flushing the L1 twice.

Linux and OS X do this very thing, possibly to work around bugs in the
silicon.  Without this it doesn't flush completely, and results in
memory corruption down the road.
Clean up the low level PMU sleep code.  This could actually be moved
elsewhere, since it's not precisely related to the PMU.