Split publication of messages to allow sharing non-private messages.

We also fixed up the indices for Messages and OpLogs to make those queries
faster.  The hubot adapter will need to be updated, since it needs to listen
to two different subscriptions now.

Change-Id: I6df8a2d9883e8385efdcab919c27a6f0f4426ff6
Add `google` package to allow server to update google drive directly.

This is the first draft of the new google drive integration code.
This API is asynchronous, using Promises/A+ via the `when` package.

Change-Id: Ie772307a981ecddd0755ee8119b8e41c0f557ddb
Rework `google` package: make it synchronous.

Synchronous APIs are the "Meteor way".  Code is much easier to read
and the REPL is easier to use, too.

Change-Id: Ib00c05e50ea715e85cbc3b5cf1e328b10f229034
Only create spreadsheet if it doesn't already exist.

Change-Id: I62850787d3335aa835dac23c936cb2206c693a80
Create new puzzle spreadsheets from template.

This lets us initialize new puzzle/round spreadsheets with some helpful
formatting.

Change-Id: Ia61635a59be8a7420582df9bdfdec96ddad9a16f
Don't loop forever if some puzzle folder items are owned by others.

Google doesn't return an error message if we try to delete an item we don't
own; it just doesn't delete it.

Improve the algorithm by first looping through all the files using the
page tokens.  Then check for remaining files owned by us at the end
(race detection).  This helps protect against infinite loops if the
number of non-owned files in a directory is larger than MAX_RESULTS.

Change-Id: I564e9f186ef95976a7b02b6f740afa49f879576b
Clicking on the `edit` button should log you in if necessary.

This is better than doing nothing if you are logged out!

Change-Id: I6856a1de5cebd9d3e0315522a9a50fa47b04f5ef
Move `settings.json` to `private/settings.json`.

Data we don't want to expose to the client should be in `private/` (or
`server/`).

(Do we have to be careful to delete private/settings.json before using
meteor deploy?)

Change-Id: I33864bc1edbbb708f72dfecd0b62a3a83403558c
Rename `google` package to `googleapis` to avoid conflict with internal package.

Change-Id: If4ba588b33fa30b33d480fb7faccc92a88f5215d
Deal correctly with possible races while updating puzzle/round tags.

Change-Id: Ic20d974bcc553ae5dae83429b536131b1750ae70
Remove dead code: we do chat log paging with publish/subscribe.

Change-Id: I5ad57b2abe6424b5211bac21a427eeb410f68658
Better handle failure to load Google Picker.

Instead of leaving `google` undefined, inviting a ReferenceError down the
line and a puzzling error message, set `google` to null and report
the error to console.

Change-Id: I2e424c73b29833772f81cb83065397c59ea32cf9
Hoist constants to Meteor.settings; dynamically create Ringhunters folder.

Closes bug #30 (Use Meteor.settings for various constants).

Change-Id: I72e0d7dfe23197831524a85eafea7e956bd6abd6
Export global 'share' variable for browser console debugging.

The Meteor devs didn't want to export the coffeescript 'share' variable
to JavaScript-land, as they viewed 'share' as a coffeescript-specific
convention.  But we have no such scruples.

Change-Id: Ia9d61d80d969b0ca71dad393ca178784782e8c99
Allow real names as well as nicks for tab completion; case-insensitive match.

Also use consistent rules for tab completion and highlighting of mentions.
Private messages count as mentions; tab complete "/msg" commands.

Change-Id: I3221e2f446740330d029cde6f45b714433469ebe
Add favico library 0.3.4 from http://lab.ejci.net/favico.js/

This will be used for chat notifications.

Change-Id: I9ef9ab0353ef47cd99509cfdbd7e89b8a8950965
Update favico.js to add support for dynamic color, letters, fix bugs, etc.

Change-Id: I3a05a7dd9c4dd8768727595a1aafba628e5aefb6
Share "last read message" state across tabs; use it for notifications.

The number of unread messages is displayed in the favicon, so you can
see it at a glance.  We also display the "last read message" as a bar
across the chat window, so you can easily see how far back you need
to scroll to catch up.  Remove a bunch of now-unnecessary code.

Closes #45, #94.

Change-Id: Ie393b5e5226ad2c702ee5364d7991f31bb08d9a8
Tweaks so that meteor app doesn't have to run at top level of site.

Change-Id: I652566184a3d89ec8ffb788eaf4746bca6771516
Fix position of 'open spreadsheet in new window' link.

Closes #105.

Change-Id: Ib987c003644ba693f61ee21d0335d0960231d4be