FIXED: gatherAssets: more defensive code against errors

 * gatherAssets now returns null if encountered unrecoverable error
 * use saved local library and asset JSON if JSON downloads fail
 * Defensive fix for #796