let username/password to be specified outside URI

since parse_uri() returns None for values not specified in the uri, 'name' was allowed to be specified outside the uri. This commit allows the same for username and password.