Start work on frontend UI.

Bring Knockout.js in for some much needed JS sanity.  Start rewrite of
the hideously ugly JS using Knockout, binding UI elements to a new ko
ViewModel.  Getting much nicer, but still lots of ugly.

Adds full support for adding & removing tags and fixes issue with
favoriting a photo.  With proper UI support.