Bring bulk app translation format in line with Vellum bulk form translation (and fix a bug)

The form sheets in the bulk app translation feature had a different format than that found in vellum's bulk form translation. Bulk app translation's form sheets were also being populated in an error prone way that made false assumptions about the `itext/translation/text` nodes that correspond to each question. Now, bulk app translation populates sheet by looking directly at the `itext` node, as opposed to looking at the list of questions first.

The main difference in format is that the sheet now contains `itext/translation/text` node ids, instead of question paths (which are often the same, but not always).

This PR also adds a test and cleans up the bulk app translation test classes. This PR is sort of a follow on from #5098. Original ticket [here](http://manage.dimagi.com/default.asp?150545).
`id` is a built in function in Python. I wouldn't object to reusing the name except that this is a rather large (> 100 lines) function, and that means there's quite a bit of code that cannot use `id` in the conventional way.