Issue title: Minimum FASTA File Requirements for Visualization
 Issue body: Hey all,

I've been wrestling with a problem for the last couple days that I can't seem to resolve alone.

I'm trying to create a basic visualization with IGV and I'm using an API to create a fasta and fasta.fai both as File type blobs.

I've formed the content of these files just like any fasta file
i.g. 

 Comments: 
 Comment 0: Did you look in the console for errors?  Also, be sure you are using the latest version.
 Comment 1: BTW I don't understand the "cast" comment, javascript is typeless there are no casts.

 Comment 2: If you can zip up a complete working example I will look into it.  Your fasta file looks fine.
 Comment 3: > BTW I don't understand the "cast" comment, javascript is typeless there are no casts.

My mistake, for context I'm using typescript. 
Really what I'm doing is just telling the Blob it is a File. (IGV  says fastaURL and indexURL required the type File.)
 Comment 4: > If you can zip up a complete working example I will look into it. Your fasta file looks fine.

Got it, I'll hack up a live version for you to look at. Really appreciate the help.
 Comment 5: Actually also "name",  here is the actual isFile test

```
function isFile(object) {
    if(!object) {
        return false;
    }
    return typeof object !== 'function' &&
        (object instanceof File ||
            (object.hasOwnProperty("name") && typeof object.slice === 'function' && typeof object.arrayBuffer === 'function'))
}
```


 Comment 6: Blob implements slice and arrayBuffer, so my suggestion would be to wrap a Blob in an object with a "name" property. 
 Comment 7: > Blob implements slice and arrayBuffer, so my suggestion would be to wrap a Blob in an object with a "name" property.

I think I may have done so. My example code was a bit sparse. Here what the object looks like on the console
![Screenshot 2022-06-02 141324](https://user-images.githubusercontent.com/47713674/171698566-3142afd2-a469-484e-be6e-a742f30c4674.png)
.
 Comment 8: Actually I think the problem is with your data,  the fai file columns should be tab delimited.
 Comment 9: > Actually I think the problem is with your data, the fai file columns should be tab delimited.

You're right! Thank you so much!
 Comment 10: This works for me

```
    const igvDiv = document.getElementById("igv-div");

    class MockFile {
        constructor(str) {
            this.name = ""
            this.blob = new Blob([str])
        }

        slice(start, end) {
            return this.blob.slice(start, end)
        }

        arrayBuffer() {
            return this.blob.arrayBuffer()
        }
    }

    const fastaData = ">one\n" +
        "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n" +
        "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n" +
        "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n" +
        "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n" +
        ">two\n" +
        "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" +
        ">one_seq1\n" +
        "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" +
        ">one_seq2\n" +
        "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA]n"

    const fastaIndex = "one\t120\t5\t30\t32\n" +
        "two30\t149\t30\t32\n" +
        "one_seq1\t30\t30\t30\t32\n" +
        "one_seq2 30\t90\t30\t32\n"

    const fastaBlob = new MockFile(fastaData)
    const indexBlob = new MockFile(fastaIndex)


    const options =
        {
            reference: {
                fastaURL: fastaBlob,
                indexURL: indexBlob
            }
        }

    igv.createBrowser(igvDiv, options)
        .then(function (browser) {
            console.log("Created IGV browser");
        })

```
 Comment 11: BTW, you don't need an index here, just set indexed: false
```
            reference: {
                fastaURL: fastaBlob,
                indexed: false
            }
```
{'source': 'GithubIssues', 'repo_name_with_owner': 'igvteam/igv.js', 'issue_id': 1258484518, 'repo_stars': 544.0}