Add window input Lua dispatches

Dispatches are C functions which call Lua functions (if they are
defined in the Lua state) for various events that are triggered
in native code, like keyboard/mouse movement, window minimizes and
restores, etc.

Also adds a lua_cpcall so we can keep the lua_State static and
protected within the core.c translation unit.

Internal input callbacks will store static, private data that holds
info about the event. This struct can then be used to dispatch
events as described above.