Move fragment/vertex shader into constants.
Block form of enable_realtime.

Need to double-check whether I should throw a nested event loop into
enable_realtime blocks... not yet sure if this is actually needed, just
seemed like an obvious place to put a block form.
Basic implementations of perform_ and request_layout.

Just recursively calling layout for subviews and such at the moment.
Uncomment handle_event because none is faster than an empty one.

Similar logic to not implementing certain methods in NSView subclasses
for Cocoa apps, except in Ruby's case, method calls are a lot more
expensive.
Fix Window#handle_event.

Removes super call for nonexistent method.
Implement to_hsv.

The Color class probably needs to be adjusted to store an actual
colorspace, similar to Spastic (the to_hsv function is borrowed from
it), but for now this works.
Comment out draw by default.

Affects Window and View, as neither provides any particular visual
artifacts during rendition.

Only subclasses that actually draw content should implement draw.

This doesn't prevent invalidation of regions for views without draw
implementations.

TODO: determine if invalidated regions are ever cleared for views.
Possibly implement an __draw__ method that combines draw and
draw_subviews to avoid repeating that code elsewhere (as is the case
with both draw_subviews and Window#__swap_buffers__).
Stuff most drawing logic into __draw__.

Ok, after passing out yesterday and forgetting about this, I bothered
checking whether invalidated regions are ever reset for regular views:
answer is no.

So, that's fixed. Stuffed calls to draw and draw_subviews into an
__draw__(driver) method. Ideally, no class other than Window should
override __draw__, but it's permissible as a matter of preparing state
and determining whether a view and its subviews are actually drawn.

Oddly enough, there is no way to actually hide a view yet. That is
apparently the realm of windows and only windows right now. Odd.
Add View#hidden[=] and View#hide/show.

Window#hide/show no longer exist as methods on Window, instead Window
now just overrides hidden= and sets the underlying GLFW window's
visibility based on the new visibility.