Refactor case list

The full diff is hard to read because it started out by moving the template code for the case list and case detail tabs into their own files. The individual commits are a little easier to read, though there's still a fair amount of moving around code in some of them.

The main idea of this refactor is to use knockout consistently as the entry point without changing how all the underlying nodes are currently rendered in js. The case list and case detail tabs now governed by a single `ko.applyBindings` call each. I got rid of all of the different id attributes being used to access nodes directly, letting knockout take care of it using `with` to render a template on a sub-object of the main one (e.g.  `with: sortRows` below).

I also just deleted some code that wasn't doing anything.