Revert "Allow keyboard focusable elements to have a context"

This reverts commit 120a116aa209fcfbac67fd0c8885a1df70eddc48.

I'm trying out another approach that doesn't require the focus parent.
Revert "Add focusable context to "In review" panel when reviewing snapshots"

This reverts commit 8b6e6b4ffca77353c716c9e9fb6257536f67cb48.

I'm trying out another approach that doesn't require the focus parent.
Only scroll when necessary on keyboard navigation

This commit replaces the previous usage of the native JS function
`scrollIntoView` with a jQuery solution instead. The new solution:

- Only scrolls when the focused element is hidden.
- Keeps 1/4 of the screen above the focused element (for context).
- Animates the scroll (this improved the experience by *a lot*, because
  you can see exactly what happens)

To figure out if an element is shown on the screen or not, I'm using the
`jquery.visible` Bower plugin. I tried out a couple of alternatives that
did scrolling, but both `jquery.scrollIntoView` (buggy) and
`jquery.scrollTo` (didn't avoid scrolling if it wasn't needed) came in
short.

An important detail about the animation: The previous animation is
cancelled (`stop()`ed) before the next is started. This is important in
order to allow people hammering/holding down j/k.

Why scroll both 'html' and 'body'? Well, 'body' works for Chrome, and
'html' works for Firefox. Even though we don't care much about browser
compatibility, I think Firefox users deserve to get scrolling
functionality. @ted27 will at least thank me (I hope).