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.
These will not work with dead code elimination turned on. `drop` might be removed. It would be better to pass a reference to the drop function as a function argument. The same applies to `takeWhile`.