models: add 'length' to Content.to_json
ui: select best content

Now the algorithm is as follows:
 * add score of 1000 to expired contents,
 * add score of 100 to summary contents,
 * subtract the logarithm of the content length from the score.

The content with the smallest score wins. This prefers the non-expired
non-summary content with the largest length.