In spirit of SI-2411, making map2Conserve occupy constant stack space.
I recently discovered a StackOverflowError, caused by this function: https://gist.github.com/folone/7b2f2e2a16314ab28109
The circumstances are pretty extreme, still having a tail-recursive function seems to be a good idea.
The function behaves the same way old function behaved, which is not really how map2 behaves: when getting a nil in ys, it will still return xs, not nil.