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.
I haven't checked the standard, but I'm pretty sure it's legal. Certainly it's documented on [cppreference.com](http://en.cppreference.com/w/cpp/language/enum) and [MSDN (VS2013)](http://msdn.microsoft.com/en-us/library/2dzy4k6e.aspx), and it doesn't seem to trigger any complaints from GCC 4.9 or Clang 3.5.

I deliberately chose not to use a scoped enum because I wanted it to be easy to write `42*Day` and similar, although in fact I backtracked on that, so the Sint64 * TimeUnit operator is commented out and I haven't used it in any of this code (which also means I should update the big comment above). Perhaps it would be better to drop the namespace and use a scoped enum here.