Commit Briefs
rewrite the keybindings management
use a table to define all the keys and split actions into separate functions. It's cleaner to support multiple keys bound to the same action this way (like for e.g. PAGE_DOWN and C-v.)
rewrite spawn to use varargs
it's seems neater than packing an array on the spot, we just do that inside spawn before calling execvp. If we get too many arguments, just abort. This also changes how the forking is handled: I set RVSEL only for the child and call disable_handlers() and endwin() preemptively to avoid possible races with our children.
add x{m,c,re}alloc functions
is easier this way than edit the existing code to handle malloc(3) failures.