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.
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.
TLS parameters can be passed through the following environment
variables:
* OPENSTACK_CA_FILE - CA file path
* OPENSTACK_CERT_FILE - cert file path
* OPENSTACK_KEY_FILE - key file path. Either both or none of cert/key
must be specified
* OPENSTACK_TLS_SERVER_NAME - (optional) expected CN of the server
certificate if differs from domain in the URL
* OPENSTACK_TLS_INSECURE - if set to yes|true|1 disables validation of
the server certificate
Code that loads tls.Config from environment variables was extracted
into dedicated package so that it could be reused by different providers