Undefined dict order caused random test failure.
Various performance improvements

- Do not use @property self.version, use self._module.version. This
  avoids a method call.
- Do not use @property self.netmask, use self._netmask_int. This avoids
  creating a temporary IPAddress object.
- Do not use @property self.hostmask, use self._hostmask_int. This
  avoids creating a temporary IPAddress object.
- IPNetwork.cidr() avoids temporary IPAddress object and string magic.
- cidr_exclude passes version=x when creating IPNetworks, so that
  __init__ does not have to guess.
Handle IPNetwork/IPRange efficiently in IPSet.update()
Use faster compaction algorithm in IPSet.add()

When only a single IPNetwork is added to an already-compacted IPSet,
re-compaction can be done much faster than in the general case.
Remove redundant self.compact() in IPSet.union()

The ip_set.update(...) already does a self.compact() at the end. No need
to do it again.
Improve performance of IPNetwork.__contains__
Improve performance of IPNetwork.sort_key()
Improve performance of IPSet.remove()
Merge branch 'master' of https://github.com/snordhausen/netaddr into snordhausen-master

Conflicts:
	netaddr/tests/2.x/core/pubsub.txt
	netaddr/tests/3.x/core/pubsub.txt
- fixing merge conflict
Merge branch 'snordhausen-master' into rel-0.7.x