[WIP] Some preloader refactoring

I'm refactoring our preloader changes to get the code to be more similar to the Rails preloader.  This should help us to port our preloader changes to 4.2 and eventually upstream.
YOLO

IMHO prepend is the best reason to break compatibility with ruby 1.9.  Named parameters is also nice but prepend opens many clean ways to add behavior to a method without monkeying around.

I've been looking at this ArVirtual code and thought, "prepend would be nice here."