Reversed System order in systemsShutdown

This change was made due to how initialization works in SDL; thought it
was a good idea, so I implemented it. Basically, the Factory System I
used to initialize SDL did so in init(), which was fine. But when
shutdown() was called, since Factory was the first System added it
called that shutdown() first, thus improperly shuttind down SDL. This
also ties in better with how C++ automatically destroys variables and
objects (in reverse order from which they were created).