Encode JSON row-by-row to prevent massive memory usage

The JSON encoder would build a string of all records which I then
write to a file handle which was actually going to an in-memory
string as well, resulting in memory usage of the total record set
times 3.  In the long run we want to stream them anyway, so I
updated the code to iterate rows.

Also, it now filters out columns that the user shouldn't see, like
the auto-generated primary key.  This is perhaps the more important
change.
ExcelExport sub-menus no longer close when clicked

I added the ExtJS hideOnClick=0 attribute so that clicking a
submenu opens its submenu instead of closing the entire menu.
Fixed typos / grammar in Bootstrap.pod