Trim away some stuff in favor of Bootstrap
Pull in MutationObserver polyfill from Polymer
Move messageview.js into app.min.js

messageview will eventually depend on app since it'll register a directive on
roostApp.
Add some directives and filters

Untested. Also reorder stuff.
Punt the messageclick thing

We'll do this in Angular land.
Rip formatMessage hook out of MessageView

It'll be Angular later. I want to shrink this code so I can get a handle on it
before rewriting it.
Fork the MutationObservers polyfill

Need to make a small change to it.
Add JsMutationObserver.setSafeImmediate
Don't insert a message that doesn't match the filter
Rewrite scroll save/restore code

Again. Introduce new notion of "scroll position" which is an (index, offset)
tuple.  We'll save and restore those everywhere.
Add JsMutationObserver.observersScheduled
Fix jumpToScrollPosition

Placeholder block logic is actually way simpler.
Drive scroll updates with MutationObserver

This'll make doing things with Angular easier. Also it will allow us to
manipulate the message list in more complex ways without trouble.
Restore scroll position on resize
Don't manipulate scrollTop directly in adjustSelection_

Leave that internal.
Move bounds calculations to a method
Debugging code
Move the message list out of an overflow:div

Closes issue #13.
Fix random-color-key and bind-ztext
Maintain an explicit placeholder node

Use it instead of loadingBelow_. This is part of moving management of
loadingAbove_ and loadingBelow_ into Angular.