Use VCAP::Errors::ApiError instead of metaprogrammed error classes

* Use ApiError.new_with_details("ErrorClassName", params...) where we used to use ErrorClassName.new(params...)
* Add Details class to retrieve information from the v2.yml errors file
* Adjust ErrorHasher to handle ApiError and its fields
* Adjust specs with new expectations for error class and message

Signed-off-by: Eric Malm <emalm@pivotallabs.com>
Actually delete metaprogrammed error classes

[#62361748]

Signed-off-by: Eric Malm <emalm@pivotallabs.com>
Serialize error details in Delayed::Job table

Rather than serialize the actual exception object, we store the hash
with the details we will present later.

[#62361748]

Signed-off-by: Eric Malm <emalm@pivotallabs.com>
Log errors from background jobs [#62361748]

Signed-off-by: Ruth Byers <rbyers@pivotallabs.com>
Move MissingServiceAuthToken class to v2.yml to be compatible with ApiError

Also removed `types` from the API error response, which was introduced in [#55737448].
This change was discussed with services engineers, and was not deemed necessary.  It
got in the way of the VCAP::Errors::ApiError unification.

[#62361748]

Signed-off-by: Ruth Byers <rbyers@pivotallabs.com>
ApiError will fail fast if given an invalid name [#62361748]

Signed-off-by: Ruth Byers <rbyers@pivotallabs.com>
Merge branch 'wip-62361748'

[Finishes #62361748]