Keyboard navigation

This is a first rough draft for keyboard navigation support. I'd like some feedback on what kind of changes you'd suggest before merging. 

I'd like to eventually incorporate this into my media center (https://github.com/boxed/cmi), where remote control navigation is mapped to keyboard operations. But I think something like this would be useful to other people too.