beginnings of engine interface; use for tracking

[#84527846]
generalize engine metadata on builds

build now has 'engine' column, which identifies which engine it's
running on. it also has a 'metadata' column which contains black-box
info for the engine to use when interacting with the build.

refactored engine interface to move Resume() to build. Lookup on Turbine
now validates metadata and uses it to construct a build.

in Tracker, if a build cannot be reconstructed with its engine, mark it
as errored.

for now, code that used .Guid and .Endpoint on the Build model have the
turbine engine logic inlined. they will later defer to the engine more.

[#84527846]
abort using engine

[#84527846]
execute builds using the engine

[#84527846]
no longer require full build model on engine build

do not input events with no resource. this is better than checking if
the build is for a job.

when outputs are done with one-off builds (#79419646), the same should
be done (i.e. a Resource field should be added to Output so that we can
distinguish).

[#84527846]
begin decoupling from turbine types