AIMultiGrid initial commit.

A local database, using XML files (so it's human readable for now), was
added where the viewer records basic information of every upload (except
mesh): textures, sounds and animations.

For each upload a hash is calculated for both the source file as well
as the final asset file (if they differ). If later the viewer runs
into the same file or asset again it can recognize it. Care has been
taken to calculate a hash in such a way that they are the same
independent of grid and/or alterations made my Linden Lab after upload.

The data stored for each upload includes where it was uploaded (grid
nick) and what the UUID is of the uploaded asset, as well as the asset
file itself. In the future this will make it much easier to automate
re-imports of exports made by creators, without that this causes
re-uploads of assets that where already uploaded before, and without
that data is lost because certain things cannot be exported (like
textures): instead of exporting textures, the originals that were kept
when uploading them the first time are used.

The upload preview floaters now warn the user if they try to upload the
same file a second time by making a Copy UUID button available and
changing the text in the Upload button to Reupload.

In particular interesting are the implications for BVH source file
uploads since they have a one-to-many relationship with the actual asset
files: the extra data needed to generate an animation asset file from a
bvh file is also stored in the database and presented as "presets" in a
drop down box when a new attempt is made to upload the same BVH file.
This makes it extremely easy to - for example - upload the same
animations to multiple grids, using just the original BVH source file to
upload it.

The database is thread-safe, multi-process safe (by using a file lock),
and repairs itself if, for example, the viewer would inadvertedly crash
in the middle of a transaction.

A new panel was added to "Prefs --> System --> Uploads" with a means to
change the database path, or to manually trigger a consistency check.