Arc reclaim

I have been testing a revival of arc_reclaim where I make direct reclaim kick the arc_reclaim thread and block until either 1 second passes or it completes. It seems to work well and brings us more in line with other implementations.

I am opening this pull request for review. The manner in which the commits are split needs to be revisited before it is merged, but the end result seems sane to me.