WIP: break apart config.Apply for better testing

(This builds on #132 so relevant commit = 7c69091cfd01)

First step towards breaking apart the mighty Apply function to be able to
perform better integration testing in cloudinit.

Throwing this up for feedback on the direction.