Refactor SingerTarget to own bookmark writer
As a first step towards starting the meltano elt
refactor (#2725 (closed)) we should move the bookmark writer out of SingerRunner and into SingerTarget. To do so we can leverage a before_invoke hook on SingerTarget, which would then call back to the invoker and attach the bookmark writer as an additional output handler.