* Add a client_config option to Ns1Provider, for passing additional
options or overrides to the SDK config. This should allow NS1 users
some flexibility without bothering octodns so much.
* Expose the actual SDK client object as `_client` on the Ns1Client wrapper
* Do my best to clarify options and defaults in the Ns1Provider docstring
Many providers make their modifications in the order that changes comes. In
python3 this causes things to be inconsistently ordered. That mostly works, but
could result in hidenbugs (e.g. Route53Provider's batching could be completely
different based on the order it sees changes.) Sorting changes consistently
is a good thing and it shouldn't hurt situations where providers are already
doing their own ordering. All-in-all more consistent is better and we have to be
explicit with python 3.
Implements the unsupported records skipping fix [proposed by ross](https://github.com/github/octodns/issues/176#issuecomment-359294960) in #176 for DNSimple and additionally for NS1.
Fixes#176 and also the NS1 version of it (`AttributeError: 'Ns1Provider' object has no attribute '_data_for_DNSKEY'`) that currently affect domains that have DNSSEC enabled.
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.