fontinfo.plist import/export v4. update for PR 215

see https://github.com/metapolator/metapolator/pull/215
Actually, since we are lazy loading fontinfo, its not about it being on disk or not. 

use case: user wants to set fontinfo to undefined.
they get the 

    var pm = foo.getProjectMaster(...)
    pm.fontinfo = undefined
    pm.writeFontInfoToFile()

Unless the setter for fontinfo knows that fontinfo was initialized (to undefined) then when writeFontInfoToFile() is called it might try to first lazy load the fontinfo before writing it. If we make 
writeFontInfoToFile() not try to lazy load the fontinfo before writing then a use case like

    var pm = foo.getProjectMaster(...)
    pm.writeFontInfoToFile( "/tmp/whatever.plist" )

will not export the fontinfo.plist because it was never lazy loaded. I should also update _p.writeFontInfoToFile to handle if fontinfo is undefined, perhaps removing a file at the nominated path to indicate that there should be no fontinfo.

The alternate is to assume that if fontinfo is undefined then it has not been lazy loaded. This would also indicate that the projectmaster::fontinfo getter should blanket catch errors (and rethrow them after) and set this._fontinfo to {} to avoid always trying to satisfy a lazy load of fontinfo on subsequent calls.

The current getter for fontinfo sets the _fontinfoIsInitialized to true before performing the read load and allows the errors to be directly thrown.

I am happy to remove fontinfoIsInitialized and just assume if _fontinfo === undefined then it needs a lazy load. Let me know if that is the desired way.