Make node preprocessing handle trailing virtual elements
Ensure that node preprocessing doesn't stop afterRender from receiving the rendered nodes
Cleanup: Replace the one giant preprocessNode spec with a series of smaller, easier to understand specs