Fix: rfind_from raises Out_of_bounds if the position is invalid.

Like String.rfind_from, if the position is invalid, find should raise
Out_of_bounds, not Not_found.
Change ambiguous names, such as s1 and s2, to more meaningful names.
Add some tests.