Introduce `assignLinks` phase of deserialization.

This phase is performed after normalization, when all new records are
assigned local ids. Therefore, links can be assigned even to new
records, which will have their local -> remote ids mapped in the schema.

[Fixes #33]
Customizable pluralize and singularize.
Clean up Gitignore
Changed variable name to better reflect value

Calling the variable that holds the deserialized record or array of records `primary` is confusing because it's suggestive (in the case of DB records or JSON representations thereof) of primary keys.

The method signatures for `_addRecordsToCache` and `_addRecordToCache` use `records` and `record`, respectively, so this is consistent with their use.
Merge pull request #38 from jordansexton/patch-1

Changed variable name to better reflect value
Comment cleanup
Quash jshint warning about specific function-in-loop creation
typeof null === 'object'