feat(metrics) add beginnings of a metrics system

@mappum's #410 is blocked on metrics. This introduces a metrics package to handle these concerns cleanly (constructor injection) and keep metrics out of the public intefaces. `delay.D` has shown to be a clean way to inject instrumental, so this is modeled after that.

Just the beginning.

- [ ] add a metrics registry