Silence warning about no decl. for Init_glfw3.
Remove unneeded statement.
Mark a few functions as static.

Silences warnings for no prior decls.
Silence mixed declaration/code warnings.

Also switch to simple index/count loops for rb_monitor_video_modes,
rb_monitor_set_gamma_ramp, rb_glfw_get_joystick_axes, and
rb_glfw_get_joystick_buttons.

rb_lookup_window and some callbacks made slightly safer.
rb_window_get_current_context no longer duplicates rb_lookup_window's
code.
Wrap all rb_funcall calls in tests for whether rb_func is non-nil/false.

This doesn't prevent you from passing in non-procs, but it at least
keeps things semi-sane.
Set callback enabled-ness based on whether the CB responds to :call
Remove lambda wrappers around blocks.
Test if callbacks respond to :call.

Callbacks shouldn't be enabled if this returns false, but I suppose
there's the off chance someone's doing something terrible with Ruby's
metaprogramming abilities. Either way, avoid calling a method that
doesn't exist.
Add Q_IS_A macro, check if objects are what they should be.

Only used in rb_monitor_set_gamma_ramp and rb_window_new at the moment.
Make most classes inherit from Data.

Only exception to this is Window, which is a fancy wrapper around
InternalWindow instances.
Version 0.4.6

- Bug fixes.
- Fix most compiler warnings.
- Remove lambda wrappers around callbacks. Whether a callback is enabled
  is now entirely dependent on whether the provided callback responds
  to :call. This also means you don't have to define all arguments of
  a callback anymore.
- A few safety nets for crappy behavior (e.g., passing the wrong type
  of argument).
- All classes but Glfw::Window inherit from Data now. This shouldn't
  affect anything and is just there for consistency. I'm assuming
  nobody is relying on Object being the direct superclass of Monitor
  and such, anyway, which'd be kind of weird.