BIG refactor into classes with specs

@kevinreedy @shanesveller 
For testing.  We expect to parse a yaml looking like this
On Oct 19, 2014 7:53 PM, "Kevin Reedy" <notifications@github.com> wrote:

> In spec/fixtures/user-data.yml:
>
> > @@ -0,0 +1,157 @@
> > +#cloud-config
>
> Why is this file included? It appears unused and would be very specific to
> AWS
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/bellycard/docker_consul_update/pull/13/files#r19065181>
> .
>