Expose file modification times

Change summary:
* Adds a new DateTime representation, with conversions to/from the Gregorian calendar. This is used for date formatting (utils.cpp format_date) and for representing file modification times.
* Exposes file modification time through the FileInfo structure.
* Exposes file modification time to Lua in the results from ReadDirectory.
* (Best part) Modifies the AutoSave code so that it picks the next autosave number based on what the most recent autosave file is. This is for #3101 and is the motivation for this whole PR.
* Includes the file modification time in the file load/save dialog.

Essential missing features:
* Untested on Windows. I have done a preliminary implementation based on the Win32 API docs (MSDN), but I haven't tried to build it. (I should probably set up a local MinGW/MXE build...)
* Untested on OS X. (I can't test it on OS X as I don't have access to a Mac).

Non-essential (?) missing features:
* The file dialog is now quite messy (the time/date display is long and columns aren't aligned), and the user can't choose to sort by file name.
Just wondering: Is giving a supertype valid without giving the ```class``` keyword? That is, shouldn't it be
```enum class TimeUnit : Sint64```. This also changes the scope of the enumerators, though. Which is kind of useless, given they are in a namespace anyway.