struct for URI representation fixes

New branch, changes to pull request #2257
1. Some methods removed.
2. Parsing algorithm changed from regexp to string slicing (by @s-ludwig)
3. proprety "auth" renamed to "userInfo"
4. Examples converted to documented unittests
```D
import std.range : chain;
import std.string : representation;

@property string userInfo() const pure nothrow
{
	if(_password.empty) // no memory allocation
		return _username;
	else
	{
		enum sep = [cast(ubyte)':'];
		return cast(string) 
			_username.representation 
			.chain(sep, _password.representation) //Chain has the length (range of `ubyte`s)
			.array; //one memory allocation
	}
}
```