Changed engines.sound.Sound.is_precached to check if the sample is in StringTables.soundprecache since EngineSound.is_sound_precached always seems to return True.

Implemented suppression of KeyError in players.weapons.projectiles.  This update is due to the inclusion of contextlib.suppress with Python3.4.

Started process of creating the User Settings menus.  Still need to create the options menus themselves for integer/float and string settings.

Some other minor PEP8 updates.