Abstract changesets into interface and add alias resource record support

I have left the now deprecated basic Change struct for backwards compatibility.