string.IsUrl() fixed regexp to only allow domain
names starting with a-z or 0-9
string.IsUrl():
* allows 5-digit ports
* no longer allows username:password@ syntax
* case insensitive match
* add tests