zombie_reader

zombie_reader uses Google Reader's corpse (i.e. its JavaScript, CSS and images)
to browse an archived Reader account (as generated by archive_reader).

For now this is just a skeleton that serves (via web.py, now in third_party) the
static resources that were saved, but does not re-implement any API endpoints.

The following changes were made to the static resources that were saved from
Reader:
- gbar.js was extracted from the inline script in main.html. This was mainly
  because it used $ in its variable names, and this conflicts with web.py's
  template system, but also because it doesn't really need to be inline.
- gbar.css was similarly extracted from the inline styles.
- The remaining $ in the inline script was escaped (it comes from a subscription
  title, and thus will be gone entirely as soon as I remove the _STREAM*
  temporary variables)
- overview.html was unintentionally saved with the "complete" option in Chrome,
  thus the markup doesn't quite match what was generated by the server (the
  effect should be the same except for some paths).
Redirect to canonical path.
Add subscriptions API handler.
Add tags API handler.
Add recommendations API handler.
Add preferences API handler.
Port stream preferences handler.
Disable the shutdown warning.
Remove stuck timeout code.
Port unread count handler.

We don't actually display unread counts, instead we show how many items there
are in the stream.
Minimial stream contents API handler.

Supports item titles, bodies and some timestamps.

Also makes items in streams be sorted in reverse chronological order.
Support oldest-first ranking.
Embed the archived user's info into the homepage.
Be more resilient about missing archive data.

Especially about not having a user-info.json file, that was only added with
b7993c5f91c1856d98d4dd702d09424e099b47a7, after the reader_archive tool was
announced.
Support a way of viewing read items oldest-first.
Implement links in stream contents output.
Disable G+ share and email actions, since they won't work.
Handle the '-' placeholder for the current user ID.
Implement published and updated timestamps in stream contents output.
Remove the sandbar.