Ensure that build fails are logged at the right times

Builds should fail with logging during the failure, not at the end. This
reverts back to the behaviour prior to #115.

Build fails still call the appropriate callback function.
Linting failures are only warnings
Ensure consistent logging for build component failures
Check the size of source files in the output file size check
Fail on ant failures too