Teach OEMenu to look at modifiers when it opens

OEMenu only looks at key modifiers when it receives the -flagsChanged:
event. This means that it will never show alternate menuitems unless a
modifier that it's interested in changes, even if one or more
interesting modifiers were already active when the menu first opened.

This exhibits today as saves cannot be deleted unless Option is pressed
while the menu is already visible.

Fixes #362
Rewrite OEHUDWindow dragging

Give OEHUDWindow dragging a rewrite to match system behavior. Not only
does this cause it to behave correctly around the menubar, even on
multiple displays, it also fixes the issue where trackpad dragging could
get the window out of sync with the mouse.

Fixes #337.
Improves library list/cover flow sorting. In particular:

* we now use -localizedCaseInsensitiveCompare: to sort game titles;
* lastPlayed is sorted by its date (year, month, day) components only;
* we do not send -rearrangeObjects when sort descriptors change since the array controller automatically rearranges its objects;
* whenever a game *or* ROM is changed, we reload visible rows.

List view selection is now bound to the selection indexes of the games NSArrayController, and there’s a hack to keep this selection in sync with IKImageFlowView when sort descriptors change.

Partial fix for issue #351.
Code cleanup making sure -loadFileAtPath: respects its contract.
Transparently decompress gzipped ROMs at runtime

Teach OpenEmuHelperApp to detect when the ROM it wants to launch is
compressed in a fashion libz can handle (e.g. gzip). When this is
detected, decompress the file into TMPDIR and launch from there instead.

It should be pretty easy to add other decompression types, such as
bzip2, if needed.

Fixes #368
Prevents sort indicators from overlapping titles in table header cells.
Merge branch 'libz'

* libz:
  Transparently decompress gzipped ROMs at runtime
When terminating an emulation, restores the main window to non-full-screen mode if full-screen was toggled after the emulation started. Fixes #363.
Since an OEDistantWindow is a child window, reflect key and main capabilities from its parent window. Furthermore, whenever an OEDistantWindow becomes key or main, it is that parent window which should actually become key or main. Fixes #365.
Removed that awful hack where OEGameView resize itself in a method that it overrides without calling the super-class method and that is called manually when allocating the view. That code was not necessary and is awful anyway.
Added cookies for Retrode SNES mappings
Added cookies for Retrode axis SNES mappings
When the list of enabled systems changes, restores the sidebar selection to either the previously selected item or another selectable item in case the previously selected item has been disabled.

OEDBAllGamesCollection has a shared instance now. This means that the sidebar NSOutlineView is able to find it even if we send -[OELibraryDatabase collections].
Replaces Sdebar with Sidebar.
Replaces OEDBSystemsChangedNotificationName with OEDBSystemsDidChangeNotification.
Embraces instancetype in +[OESidebarGroupItem groupItemWithName: andAutosaveName:].
Replaces +groupItemWithName:andAutosaveName: with +groupItemWithName:autosaveName:.
Removes -[OEGameView create/setupTimer] and -[OEGameView timerFired:] since fresh is driven by CVDisplayLink.
Add Feedback reporter support in anticipation of public beta 10 so we have nice crash reporting and feedback tracking.
Merge branch 'master' of https://github.com/OpenEmu/OpenEmu