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.
These 3 methods should be private, I don't want to commit to this API always being here for any classes that extend this.