Use GlobalSettings by default for AssetsBuilder (fixes #2919)

- call global `onHandlerNotFound` when asset can’t be found
- also factor out `onBadRequest` and `onError`
- make these three error handlers `protected` so that their behavior can be overridden.
I understand your motivation, but I’d like to offer a few arguments as to why these extension points are worthwhile. These defaults mean that the asset builder now behaves according to the global behavior for 400, 404, and 500, which is a definitely improvement on before; however, I can imagine scenarios where either you want to customize the responses for any one of these three cases, or where you might want to hook in your own instrumentation—custom logging or custom metrics. The method signatures are exactly those of what is defined in the GlobalSettings trait, so they shouldn’t be too burdensome to maintain and the three semantic cases for 400, 404, and 500 will surely always exists.