Fix numerical issues with BiCGSTAB.
To make more consistent with the literature, initialize alpha = 0
for the first iteration so that p0 = r.
Modified the restart condition for r ⟂ r0 to check the angle,
dot(r/|r|, r0/|r0|) < eps
Added a second restart condition for checking r0 ⟂ v, where
we randomly generate a new start r0 (Fixes #2856 (closed), #2899 (closed)).