edit-testrun.js: Update table after "Failure reason" or "Notes" is edited

If "Failure reason" or "Notes" is changed in a test run's page using
`instaweb`, index.html has to be reloaded to see the updated values,
which is quite inconvenient.

This commit modifies edit-testrun.js to update the table with the
actual values straight away.

Note: the `truncate` implementation matches the behaviour of
`truncate` jinja2 filter in that `length` excludes the ellipsis,
i.e. `truncate(30)` actually returns a 33-character-long string.
instaweb: Expire pages sooner to get the latest content

The current `instaweb` implementation has the following issue:
1. Change the value of "Failure reason" or "Notes". The test run page
   displays the new value as it's updated by the client side script.
2. Open another test run page.
3. Open the recently updated test run page again. The old value is
   displayed because the page is loaded from the browser cache.

Expire pages in 1 second to make sure that the latest content
is displayed in every case.

We don't use `cache_timeout=0` because in flask < 0.9 that means the
same as `cache_timeout=None` -- see
https://github.com/mitsuhiko/flask/commit/4b21e2d3
edit-testrun.js: Display automatic text if manual text is deleted

If the modified "Failure reason" or "Notes" value is deleted, `instaweb`
restores the original automatic value, but the word "Empty" is
displayed in the test run's page. Get the actual value from the server's
response.

`emptytext` property of `editable` have to be redefined because its
default value is "Empty" that we wouldn't like to see.
Merge pull request #113 from szemate/stbt-batch-report-update-content

Update modified content in stbt batch reports