Improve logging
- Introduce BuildError to generate soft failure on build error and generate hard failure on system error
- Use WithField instead of pushing data as arguments of most of logging functions
- Introduce BuildLogger which removes logging functionality from AbstractExecutor
- Use BuildLogger and write notice message as early as possible
- Remove finish notice/error from AbstractExecutor
- Sending and appending build trace is now debug message by default
cc @tmaczukin