remove Subscribe from engine interface

makes more sense to have engines just write their events, and have subscribe
just implemented by the DB.

[#85175470]
regenerate fakes; add missing generate comments
implement build aborting via db

* db can LISTEN for aborts; if called and status is already aborted,
  immediately notifies caller
* aborting a build now sends a NOTIFY for the build

when aborting via db engine, it first acquires the lock. if acquired, no
one else is tracking the build; so abort it yourself. otherwise, someone
else is tracking it, so set its status to aborted, which sends the
notification to them.

this change allows the wrapped engine to only concern itself with local
matters (so e.g. local garden engine doesn't have to manage aborting
across ATCs).

[#85175470]
add logging and comments to db engine