Try to recover from bad URI value

See https://github.com/mozilla/pdf.js/issues/4159

BAD (http://cms.di.unipi.it/files/bbec7791fac20e98127c77531e4031912392156c/testo.pdf)
<< /S /URI /URI /v#2findex.php#2fFile:Logo.png >>

GOOD (http://www.ioi2012.org/wp-content/uploads/2011/12/practice.pdf):
<< /S /URI /URI (http://127.0.0.1/v/index.php/File:Logo.png >>

The URL should be wrapped in parentheses, but sometimes it isn't.
Consequently, the value is interpreted as a Name (because of the leading "/"),
and the resulting object is `{name: "v/index.php/File:Logo.png" }`. Obviously,
this is not a string, so `url.indexOf` throws an error here.
RFC 3986-compliant isValidUrl (protocol parsing)

To avoid misinterpreting URLs like "/File:wikipedia.png" as a
non-relative URLs.
Merge pull request #4163 from Rob--W/issue-4159-uri-annot

Recover from bad URI values