Fixed uncased file name matching for PUT's on Linux.

Got uncased file name matching for PUT's on case-sensitive filesystems on Linux to truly work.  To do this, I

- redid the test harness so that FileOpen (which does the uncased matching) is no longer just a stand-in for fopen to be used during testing, but can also be called directly by other modules
- changed the TextFile logic to call FileOpen.

In addition, I modified FileOpen so that it will try to use the file name with the exact same case as input, before doing a directory search.

(Q: should file output operations, e.g. writing of SAV files, also go through uncased file matching?  Upon a `sav boot` in `BOOT.S`, if a file `BOOT` exists, should the `sav` command write to `BOOT`, or should it just continue writing to `boot` anyway?)