src/: split out a liboptracker to handle reporting info on TrackedOps

We also include TrackedMutex and TrackedResource to model tracking
possibly contended resources.

Signed-off-by: Samuel Just <sam.just@inktank.com>
PG: convert _lock to TrackedMutex

Signed-off-by: Samuel Just <sam.just@inktank.com>
PG: remove build_scrub_map, build_inc_scrub_map

Only needed for classic scrub!

Signed-off-by: Samuel Just <sam.just@inktank.com>
PG: add lockers/helpers for managing locking ops

Signed-off-by: Samuel Just <sam.just@inktank.com>
osd/: convert simple PG lock users to use SIMPLE_PGLOCKER

Signed-off-by: Samuel Just <sam.just@inktank.com>
PG: make scrubber a TrackedOp implementer and use with lock()

Signed-off-by: Samuel Just <sam.just@inktank.com>
OSD: pass op into PG::lock() in OpWQ

Signed-off-by: Samuel Just <sam.just@inktank.com>