SDL_Rect and SDL_Point pointers can be NULL in some use cases.

There are probably other structs or use cases where the pointer
can be NULL that I haven't encountered yet.
Split lib/helpers.scm into separate files.
Renamed define-foreign-struct to define-nonuniform-struct-accessors.
Revamped define-nonuniform-struct-accessors.
Made nonuniform-struct-constructors macro.

This is so we can wrap either a pointer to a struct or a newly
allocated blob, which is needed in cases where you must pass in
a pointer to a struct that you allocated yourself.

It also allows using #f for cases where you can pass a NULL pointer.
Made nonuniform-struct-constructors actually work.
Use foreign-lambda*-with-dynamic-body in other macros.
Added %switch util for internal use.

Similar to alexandria:switch from CL.
Don't need %switch after all. Chicken has select.
Added sdl-event? predicate for any type of SDL event.
Major revamp of how events are represented.

One record type to rule them all.
Added better SDL_Keysym support.
Added demos/raw/basics.scm.