Fix off-by-one in generateRandomLengthString
Add "end" parameter for random string functions

You can now specify different sets of characters for start, end and
everything in between.
Make sure domains don't end in dashes
Make sure email local parts conform to the RFC