Add validation classes

This reworks how all the `*_node` methods are defined to pull the common patterns of mutation (before/after) and validation out.
![](http://media.giphy.com/media/v12FFFTON0WgE/giphy.gif)

Love it.