Separate MTL files from OBJ files.

This should make it easier to handle future updates to both file types.
Changed method signature to make the static analyzer happy.

GLLURLFromString returns a URL that the caller has to release. Following standard conventions, it therefore needs either Create or Copy in its name. Apparently, the static analyzer checks and enforces this, so I changed this to make the warning go away (and because keeping with standard conventions is always a good idea).
Added initial unit tests for obj files.

In the course of this, a few cases were corrected where nil might be returned without a proper error being set.