Adds support for menus that don't fit on the screen.

Also adds Vim keybindings for menu navigation.

Squashed commit of the following:

commit ca3b89acf2c4817a93d6dcdcf1f643ae109067e4
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Sat Oct 20 14:10:51 2012 -0700

    Adds Vim keybindings for menu navigation.

commit 3be7936ea2f4cfeaa4ed5982824b44461dbc04a6
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Sat Oct 20 14:00:56 2012 -0700

    Resets menu positions when they are activated.

commit e1a79a686b6514ddd1156a1f17fda8734a056cde
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Sat Oct 20 13:50:30 2012 -0700

    Fixes viewport focus issues.

commit 9df352885e15dec524040c9581a0d646d4c9c187
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Thu Oct 18 21:36:44 2012 -0700

    Tweaks viewport height calculation.

commit fa7c01430bd0640a89e5226ff12dd53d21ad1f09
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Thu Oct 18 21:08:31 2012 -0700

    WIP: Partial conversion of menu pagers to tables.

commit a6470277db62059c8065a2a0655f50e6c9987dea
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Wed Oct 17 21:11:47 2012 -0700

    Tweaks some math and adds some self-deprecating comments.  I suck at CSS and math.

commit 38100d7fc2072060d192ebe7ad9a97aaefc7cba1
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Wed Oct 17 20:42:58 2012 -0700

    Moves a margin.

commit ffbabd980f1390ac40d36271f2f7a3f1e3ef3cfb
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Tue Oct 16 23:35:30 2012 -0700

    Numbers some list items for easier testing.

commit 777e8dd1d3b1e652e46731a43cbfe4e36f4691ba
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Mon Oct 15 15:35:57 2012 -0700

    Swaps a padding for a margin.

commit bd263362c75276fb004e90e95a39695a21ba62b1
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Mon Oct 15 15:05:41 2012 -0700

    Adds a forgotten param.

commit 139538a5696b396ee6eefadcb825913d536662c3
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Mon Oct 15 14:19:40 2012 -0700

    Calls the viewport funciton.

commit bc2bc66a8a168ea437e1d9fc6e5087fca70c679b
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Mon Oct 15 14:01:29 2012 -0700

    Adds getViewportHeight, which is neither called nor works correctly.

commit 1c23875c96db921256e0478d926456aea77385fd
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Sun Oct 14 18:03:47 2012 -0700

    Adds focusing for elements below the viewport.

commit fdd5abf0a34de93cdc302d8a364992d7d398c125
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Sun Oct 14 17:49:08 2012 -0700

    Adds focusing for elements above the viewport.

commit 1221157fcd2e9b2058f7bd9a14444335bb888725
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Sun Oct 14 17:36:56 2012 -0700

    Changed how pagers are sized vertically to accomodate menu masking.

commit e815116c0f1556c70c3d3314d4d2908c8dddef07
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Sun Oct 14 17:20:46 2012 -0700

    Adds some state checking logic.

commit fe7bc08378a20ecad7b41df5f8073b4766408e99
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Sun Oct 14 17:06:29 2012 -0700

    Inserts hook stubs for bringing focused buttons into view.

commit 4fa0277105586d123bd1dde64d9d719d03232bd4
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Sun Oct 14 16:51:14 2012 -0700

    Tweaks the height measuring logic for masking.

commit a75ffcf91e63fccaeadbcf05f830b708bb217874
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Sat Oct 13 18:10:42 2012 -0700

    Adds masking for long menus.

commit 3615c2d82a0db36741fd266ad40387fb500d42a2
Author: Jeremy Kahn <jeremyckahn@gmail.com>
Date:   Sat Oct 13 17:48:21 2012 -0700

    Makes the test menu really long so it flows off the page.