FEATURE: url categorization

The client now fires off an event (using Chaplin's Mediator) when a
PageVisit is added to the NewPageVisits collection, which is subscribed
by the PageVisit model, which then categorizes that URL via an AJAX
call. Finally, the PageVisit in question is updated with the returned
category.
FEATURE: validates URL for PageVisit model

- Check if the URL is a Chrome-only one (like chrome://newtab).
- Supply a default category for PageVisit.attributes.category named
  "Other".
FEATURE: background to content scr. communication

- simple hello and goodbye message passing
- some comments and cleanup
- resorted to straight javascript for content script; might want to
  change this later
FIX: fixes various problems

- made a new service so only 1 listener for add:PageVisit is spawned
- added an error callback to ajax request in categorizer
- modified manifest to inject content script into https pages too
FIX: fixes how content scripts work

- now, they're in coffeescript in `app/content-scripts` and are compiled
  into a separate file, and then there's a new asset called `inject.js`
which is essentially the initializer (like `init.js`).
PROGRESS: simple duration tracking

- content script sends regular messages, with no end-condition except
  the closure of the tab, and the background page updates the
appropriate page visit in NewPageVisits
- problems
  - no end condition
  - doesn't check if tab is active
  - if it doesn't print out the page visit it finds on reception of the
    content script's message, things somehow don't work. Backbone
localStorage seems to be time sensitive somehow
  - console logging
FEATURE: duration tracking

- Active tabs are now tracked if the window is in focus only.
- Since initialize() is called on all models when we try to do basically
  anything anywhere, putting created_at and updated_at initialization
there doesn't make sense. So, I moved it to defaults, and now it tracks
stuff properly.
- Using $.Deferred like all good humans should.
FEATURE: lexing and syllable counting

- translated lexer from jsPos to coffee
- dirty and simple syllable counting (thanks, SO!)
FEATURE: Flesch Kincaid test

- implemented it, and put an example in there. To see it run, just load
  the extension and inspect the background.html page on first run.
FEATURE: lots of NLP features added

- title, content, word count, and reading score added to PageVisit
- promiscuous-chemist was separately updated and deployed
- ReadabilityService added, AJAX calls added; it works for the few I
  tried
FIX: wrapped something in $.when()
kill trailing whitespace.
Add less-brunch for styles.
Initial pass at navbar styles.
Refactor views.
Tab navigation+delegation awesomeness.
Merge remote-tracking branch 'origin/master' into develop
FIX: renamed 'prescrip' stuff to 'prescription'
adds validListenUrl helper; hoping to extend
FIX: google search pages always set as highlighted

- added new pattern inside utils.validListenUrl
- updated the communication between background page and
  content script
  - no longer sends location.href; instead, rely on sender Port
    object when the activity updates are received