Search with typeahead

Switched everything over to use Typeahead.js and Bloodhound.js. Tried to keep proper formatting intact, but a second look would be appreciated. Will post screenshots as well. 
Having `self` as an argument isn't a pattern I've seen in JavaScript before. I'm sure this works just fine, but I'd personally either call this `context`, or use `this` directly, using bind when you attach it to an event.

The uses of `self` I've seen has been pretty much exclusively `var self = this`. 

In this particular case, I'd get rid of this function completely, since it's called in only one place. You can just inline the function.