A utility library like Underscore is very helpful.

Underscore adds a number of useful iteration and transformation
functions that work in a functional style.
Must have input events.

The game would be boring otherwise. They're put together such that the
inputs combine into nested events. They are of the form
"input.{special,attack}.{neutral,{smash,tilt}.{left,right,up,down}}".
Simpler key hit checks are easier to understand.
Previous changes made key lookup tables unnecessary.
Toggling input keys can be handled more simply without a table.
Standard Lua should be preferred over Underscore.lua for simple operations.
Need to mock shield, jump, and grab events.
Looking up values is better than hard coding them.
Some simple movement would be nice.
Move jump and grab keys.

Because we have a separate set of keys for making attacks go different
directions, it's okay to make the up key the jump key. The grab key now
goes above and to the right of the tilt modifiers so that it is
symmetrical with the shield key.
Events need a way to be generated and dispatched.
Merge remote-tracking branch 'origin/input'