Documnt that the patches must apply without fuzz
pq: Print proper error message if we fail to apply the tree

e.g. instead of

gbp:error: Failed to apply 'debian/patches/poison+remember_trash'

we now have

gbp:error: Failed to apply 'debian/patches/poison+remember_trash': Failed to commit tree: fatal: invalid date format: 1998/03/21
pq: Try harder to cleanup after a failed patch

If we fail to apply the patch the tree is left in a dirty state
so reset to the last head. This avoids irritating errors like:

gbp:error: Failed to apply 'debian/patches/poison+remember_trash': Failed to commit tree: fatal: invalid date format: 1998/03/21

following files would be overwritten by checkout:
	doc/hosts.nntp.5
	innd/art.c
	innd/innd.h
	innd/rc.c
Please, commit your changes or stash them before you can switch branches.
Aborting

Thanks: Marco d'Itri for the repo to debug this
Determine build_dir upfront

so it's available to all hooks
Improve error reporting on failed commands

Make it more clear if the command exited with non zero exit status.
Also don't report the command line twice.

Closes: #748248
Improve error reporting on hooks

Make it obvious that a hook failed and not a gbp internal function