It blankslate

Instead of repeating the same method undefining code as BlankSlate, just inherit from it.

@bryanlarsen, I think it's safe bringing all latest changes from master into rails4, am I right?