Added new database abstraction, denormalized database with dynamic normalization for optimal read queries.

Objects are stored in a central table with key/value pairs. When 1:1, 1:N and N:N relationships are declared, data is drawn from the key/value pairs to fill the newly created tables. Data is kept in sync across adds and deletes, as well as when new relations are added/dropped.
[savestates] Added game state persistence built on a new save game database.

RetroPlayer can automatically load previous game state on file open, and 9 slots are available for hotkey-based save state storage.
[savestates] Added new Save State Manager dialog window
Game Clients: prompt to set system directory on file open.

Once set, system directory can be changed from add-on settings dialog
Add game client system directories tab to Game Settings window