Additional resources continued: Route53 classes, many fixes

Here we go, batch 2. 

This fixes more than a few issue with the previous PR, so if you merged that one, probably best to merge this one too - I'm reasonably confident it will be a net decrease in bugs :)

Mostly I was quietly going insane trying to figure out why Puppet values always ended up different in the catalog than in the manifest file - (demonstration here https://gist.github.com/rubyruy/b44389f68becd46e8975). Eventually I figured out those newproperty blocks are actually class definitions and I just needed to new base type. Whew.

Also added some special integration between R53 records and EC2 instances allowing for instant DNS naming of new nodes.