redo mouse handling yet again

General changes to script input handling:
- lua scripts can basically define their own input.conf, which overlays
  the default input.conf and that of the user.
  What scripts bind are actually input sections (which always were in
  MPlayer, just rarely used).
- these sections can be "stacked" as well now (before this commit it
  only allowed a single section ot be active on top of the default
  bindings; now it's generalized as a list of active sections)
- the helper function set_key_bindings() allows binding lua functions
  (as in real functions, not just with the "lua" command)
- this per-script input section can be enabled and disabled with
  enable_key_bindings()/disable_key_bindings() (so a script can decide
  not to overwrite user bindings by default until it is activated etc.)
- actually, users can override script key bindings too, by using the
  name of the script's input section, e.g.
    b {script} show_text "hi"
  in the user's input.conf will override the script's binding to "b".
  It also can be used to define new bindings depending whether a script
  is active, completely independent from the script's implementation.

Mouse handling:
- by default, mouse input can be bound exactly like keys
- mouse move is a command again ("mouse_move"), which can be bound
  normally
- each input section has a "mouse area", a rectangular region where
  mouse events can be received
- by default, the mouse area covers the whole screen, and scripts
  have to set it
- this way it would be possible to allow multiple scripts to grab
  mouse events from different areas of the screen
- mp_input_test_mouse() returns true for a coordinate (x,y), if mouse
  events at this cursor position should always be forwarded to input.c
  (instead of, say, using it for window dragging)
- there's even mp_input_get_mouse_area(), which could be used by the
  cocoa backend to copy the current mouse area, so that a different
  thread can call mp_mouse_area_test() instead of mp_input_test_mouse()
- turned out this doesn't really work out too well with osc.lua: that
  thing always wants all mouse events, because moving around the mouse
  is supposed to make the osc visible (so it _always_ has to receive
  mouse events)
- similarily, if the osc is visible, clicking anywhere on the screen
  is supposed to make it invisible
- the same mechanism was supposed to inhibit the cursor disappearing
  (if autohide is enabled) - so basically, it was supposed to mean that
  interactive mouse input is happening

Possible solutions for the osc:
1. implement "appear on mouse move" directly in C, instead of leaving it
   to the lua script, so that these special cases can somehow be handled
   directly
2. add another mouse area with different meaning or so, so you have two
   areas: one for mouse events in general, and one where VOs are
   disallowed to initiate window dragging (and shall pass the events
   instead)
3. adjust osc behavior so that it fits within the current scheme better
   (like reacting to mouse events only within a restricted region)