This moves `domain_filter.go` to the `endpoint` package to make it
possible to filter and exclude record names in
`plan.filterRecordsForPlan()` so it does not have to be implemented in
every single provider.
Because some providers access `DomainFilter.filters` directly it had to
be exported.
This fixes and adds some tests for the RFC2136 provider. The SendMessage stub
function is improved with better DNS message parsing. Also a new test is
introduced which simulates a single record with multiple targets. Also the test
for ApplyChanges is fixed for the new batch updating.
The controller will retrieve all the endpoints at the beginning of its
loop. When changes need to be applied, the provider may need to query
the endpoints again. Allow the provider to skip the queries if its data was
cached.