Make initial bootstrap data loading synchronous.

Making the server bootstrap synchronous makes it much easier to read.
(We couldn't do this before since Meteor.call used to be asynchronous
even on the server.)

It also gives us better information about when the server is ready to go.

Change-Id: Ia89b46798e7ed6b890647eeb60f47bc097e0e584
Typo fix to random loadtest page.

Change-Id: Id4c1f3ed8e92449d9b09dd465f803385561c39fb
Use implicit $and in last answer query.

Change-Id: Ie0fc4647d5a14ab527a05de8343165683ccbbed4
Refactor: make OpLog a special type of Message.

The operation log can be viewed as a special type of 'chat room', with
only automatically-generated messages.  Refactoring the code in this way
avoids the need for duplicating the paging machinery (in forthcoming
patches); the oplog is paginated the same was as all other chat rooms.

Change-Id: Ic6ca0b5693fc7aa46ef2d7b90cbb775708b4cfe2
Paginate on server side to avoid the need for `limit` in chat message queries.

Using `limit` in message queries prevents us from using the oplog-tailing
server observe code, and it also complicates the client update efficiency
because we can't use a cursor directly -- we have to reverse the sort order
when using the limit query, and that's incompatible with the optimizations
which the renderer does for lists.

Use an explicit Pages collection, maintained by the server, which splits
the message logs for a given room into roughly MESSAGE_PAGE-sized pieces.
The `limit` queries can then be replaced by simple timestamp queries inside
an interval.

Make the pages into a doubly-linked list, which also allows us to easily
page forward as well as backward through the message history.

Change-Id: I38393c0f2b1df1b2dcb1201d34e7e70b73a4ba19
Artificially delay lastRead during simulation to prevent flicker.

Change-Id: Ib005ca49d4323168bc3d8fb29338c7845358b8c4
Better feedback when chat messages are loading.

Change-Id: I081f06f0162c5a62eaeaaaa68fd1055744ab287b
Move to the oplog-with-operators beta release of meteor.

We've marked the queries which still poll with the 0.7.0.1 release, but
which use oplog tailing on the oplog-with-operators branch.

We've also added a handy debugging function (disabled by default) which
lets you see which client subscriptions are occuring.  This helps narrow
down query polling culprits.

Change-Id: I44307f7948fd833f2299405fe8aae09b704d3f5f
Fix hunt year in wiki links.

Change-Id: I9e054a74a50e017a4fd749bf888744ac9f78ad9d
Fix html errors in templates.

Found by the parser on the template-engine-preview-10.1 branch.

Change-Id: I1f55b3ba8694f4be4d14d7cafdfa938a942246d5
Rewrite calls to deprecated jquery `live` method.

The `live` method was deprecated in jquery 1.7 and removed in jquery 1.9.
According to the jquery docs, $(document).on(...) can be used as a substitute.

Change-Id: I90c5ff51d7d8c3abcaef111a426ab7145dadc1be
Add <tbody> elements inside each <table>.

The new UI rendering `shark` branch seems to mis-associate <tr>s unless
each table has its own <tbody>.

Change-Id: Id333cd0f484201e9d8886c1fe737527866485091
Make `wiki` and `linkify` into ordinary helpers, but block helpers.

The `shark` new UI renderer doesn't allow custom block helpers in attributes.
That's ok, these don't need to be block helpers...

Change-Id: Ib7e878247ed4c9f41ee383164657f92df06f538e
Chat improvements, including performance improvement.

Use a session variable to track the last read message's timestamp for the
current room.  This lets us put a tight dependency on a single message
for the last read marker (using Session.equals).

Don't update lastRead when simulating newMessage method; this helps maintain
the invariant that lastRead will always exactly match the timestamp of a
message.

Track unread messages (and last read status) on puzzle and round pages that
embed chats, not just on chat pages.

Use sibling selector in CSS to break message followups if the last
read marker intervenes -- or for that matter, if a system message or
action intervenes.  This lets us eliminate some tricksy context code
when computing followups.

Add some (disabled) code to turn off followup formatting in exchange for
much faster rendering: if we return a cursor directly (even a cursor with
a transform method), the spark renderer uses special list handling for
tight dependency tracking and a large performance increase.

Change-Id: Ie4aff5da44b64d3e977b646d38d3da7d48b1c86b
Update the favico.js package.

From
https://github.com/ejci/favico.js/tree/ca5e30446b304177a0ee25914e9899801b67b59b
which fixes https://github.com/ejci/favico.js/issues/22

Change-Id: I08e5c98b5d686df2b664fe22e288a86e81d32510
Merge pull request #111 from cjb/page-refactor

Page refactor