Better error message for String#to_date

I did this because to_date gives a very unhelpful error message if you
do not pass in a correct date. In the process I think this cleans up the
 code nicely and even better it tends to be slightly faster than the
 current implementation.

Benchmark
https://gist.github.com/4440875
Merge pull request #8722 from kwstannard/string_to_date_change

Better error message for String#to_date