Redesign project file handling

Add a new Project class which is responsible for everything related to
opening and closing audio, video, subtitles, timecodes and keyframes.
This pulls almost everything not directly related to playing audio/video
out of the audio and video controllers, pulls more crap out of
FrameMain, and happens to make things a little simpler in the process.
Redesign how project metadata is stored in the file

Remove it from the script info section and put it in its own section
that isn't tracked by undo and make it not stringly typed. Removes the
need for the gross hack where changes are slipped in just before saving
to circumvent the undo system, cuts down on the uses of string literals
to identify fields, and probably improves performance a little.
Delete the Clean Script Info macro

It doesn't actually do anything anymore.
Add aegisub.project_properties()

Returns a table with all of the project metadata junk that used to be in
the script info section of the file.

Closes #1747.
List the files to be (un)loaded in the Load/Unload files dialog

Updates #880.
Support loading keyframes and timecodes files via drag-and-drop

Closes #1749.