Added a null,singleton,uncons,takeWhile and dropWhile to Data.String

Added a null,singleton,uncons,takeWhile and dropWhile to Data.String.

I made the takeWhile and dropWhile functions foreign to avoid the unpacking overhead.
Semicolons are not necessary in most cases, due to automatic semicolon insertion, but we might as well output "correct" code. Also, to clarify, a function *statement* (as used to define `takeWhile` above, for example) should not be terminated by a semicolon, whereas a function *expression* (as used to define the return value of `takeWhile`) should be.