~hristoast/tes3mp-uniqueitems

Be atomic

... or at least try to.  This will be really great when used with
psql.
Code cleanup, use the API to read and save cells, players

Rather than always just reading and saving cell and player data as raw
files, load cells with the API and only read player files when they
are offline.

I've also removed a bunch of unneeded code and comments.  The
`OnObjectSpawn` event just isn't needed, it's sufficient to simply zap
an already held unique if/when another player finds it.  It also
requires less code and hacky behavior; the previous method would
outright disable an entire container if it held a unique that was in
the DB.

And last but not least, the README has been updated to reflect new
options and to list default values where they had been missing.
Use a validator to beat a rare race condition

When used as a handler, our `OnObjectSpawn` method would sometimes
crash on indexing cell data.  I assume it's due to some race condition
as I could only make it happen with Stirk and even then only under
some specific conditions.

See the below link for details on that:

https://git.modding-openmw.com/TES3MP/tes3mp-server/issues/2
Added several more uniques from the UESP Unique Armor page

Somehow I missed this one.
Added Vivec Ashmask to the default unique items list
Mention that this is disableable, too
Fix cleaning uniques when they are held, improved cell checking
Added an automated DB update, running on a configurable schedule

Or none at all, as it may be disabled.
Improve config and data handling via DataManager

I've also abandoned my hand-rolled file methods for what's in
jsonInterface.
Fargoth's Ring is a unique item
Fix file paths, DRY up player saving, other improvements

* There's two types of paths: dataPath which is read by jsonInterface,
  and the rest, which are read 'manually'.
* Created a convenience wrapper for saving the player.
* Created onlyOne, which sets the count of a given itemName to one.
* Created my own loadFile function, which is basically the same as
  jsonInterface.load but without the mod dir path assumption.  This
  allows me to read player and cell data.
Add the lfs library and license
Support the new event API, other small improvements
Next