Move stuff only ever used in auto4_lua.cpp to an anonymous namespace there
Fix compilation of automation tests
Eliminate a bunch of explicit constructors/destructors

Use explicitly defaulted destructors for base cases when possible,
eliminate aggregate initialization constructors where possible, and push
some more stuff to NSDMIs.
Move some of the automation machinery to libaegisub
Switch automation tests to busted

This requires shuffling a bunch of stuff around to get a CLI lua
executable that uses an automation-like environment, but that's
something that'll be nice to have in the future anyway.

Busted indirectly depends on lfs and we currently can't use external
binary modules, so add a copy of lfs to the repo and build it with
Aegisub.
Shut up warning
Reimplement the useful parts of lfs

It doesn't support Unicode on Windows, so replace it with a
reimplementation using boost.filesystem that does, but skip all the
useless junk.