Initial work to allow typed errors from Jobs

This change allows for typed error returns from engine Jobs.
There are types defined for the basic errors in httpError and some additional types mirroring http response codes.
Modification of the wider codebase to use those typed errors has been done to the extent necessary to pass the test suite. There is work to be done verifying the completeness of that coverage, converting remaining untyped errors and adding additional per error fields as needed.