Make `Result::{and, and_then}` generic over error types implementing FromError

This change may result in additional type annotations being required when
using those two methods, in particular when the error type of the Result argument
is not known.

[breaking-change]

Closes https://github.com/rust-lang/rust/issues/18991.