This makes the low-level code a little more opinionated. If there is a
good reason for making `timers`, `counters`, etc. optional, then we can
PR it into place.
This almost makes mypy happy. I did manage to step on a defect that
there really isn't a great workaround for so I resorted to disabling
typing there.
https://github.com/python/mypy/issues/2427
@nvllsvm likes the interface that https://statsd.readthedocs.io/ exposes
and I agree. I mimicked this interface on the lower-level Connector. I
left the sprockets.mixins.metrics style on the tornado helpers for
compat reasons. You can always use `self.statsd_connector.incr()` in
your request handlers if you prefer the other interface.
Decided to switch the tests to using asynctest so that we can guarantee
support on Python 3.7 and newer. Also added pins in setup.cfg and a
tox.ini file if you want to use it.