code: function parse(uriStr) {
    var m = ('' + uriStr).match(URI_RE_);
    if (!m) { return null; }
    return new URI(
        nullIfAbsent(m[1]),
        nullIfAbsent(m[2]),
        nullIfAbsent(m[3]),
        nullIfAbsent(m[4]),
        nullIfAbsent(m[5]),
        nullIfAbsent(m[6]),
        nullIfAbsent(m[7]));
  }
docs: creates a uri from the string form.  The parser is relaxed, so special
  characters that aren't escaped but don't cause ambiguities will not cause
  parse failures.
  
  @return {URI|null}