Introduce penalty for weak (=unsupported) pawns.

We add a penalty for each pawn which is not protected by another pawn
of the same color.
Does it make sense to pull `adjacent_files_bb(f)` into its own variable (since it is used three times at least), as you did for `rank_bb(s - pawn_push(Us))`?