Fix String#start_with? implementation

It is supposed to accept a variable number of prefixes, and also to
check if they are convertible to strings. This matches behavior
documented in RubySpec.
Add String#end_with?

I'm tired of not remembering if start_with?/end_with? are portable, so
just add them both if they're not defined.