Make Str.words lazy and according to spec

The spec does *not* mention that the first word should be returned instead of
the list, if there is only one word found.  This causes a problem with << >>
interpolation at the moment, which is under investigation.

Also add add :eager / :count parameters.  The :eager version is about 10%
faster than before.  The :count version is about 30% faster than the
equivalent (:eager).elems.