Before, 1-2k record took ~10s and more than that was just painful, 5k took
forever. This records things to keep a dict of nodes with a set of records so
that we can quickly "jump" to the point we're looking for without having to
search. 10k records now takes ~5s.
- adds lenient flag to Record.new, problems during validation are just
warnings if it's true
- target populate calls during the plan phase pass lenient=True
- make all of the provider.populate call logging consistent including both
target and lenient
- add source=self to Record.new in a few places that were missing it
They were working around the lack of class hierarchy, this addresses that by
adding 2 child classes. It gets rid of a bunch of ugly default params and
if-this junk in the main class that was trying to deal with plain & geo records.
Also as a positive side effect it gets rid of some hacks that lived in
Route53Provider dealing with the fact that the old setup couldn't detect going
to/from a GeoDNS record correctly.