Content Search: Build row and column headers in javascript

Instead of passing html to the javascript from the controller, instead we're
building the html in the javascript. Now the controller is pasing back plain
json which can be more easily escaped.