Full rewrite using better design.

The first two iterations were deliberately kept rather simple as I was still
familiarizing myself with Ruby. This commit builds on that initial experience.
The code still needs to be cleaned up, but it does complete without error in
its current state. Much work remains toward proper testing and documentation.

TODO:
* Correctly select assets (should use same logic as in `links_to_follow`)
* Simplify code across the board
* rspec or test::unit, including mocks
* Smarter http/https support (avoid redirects)
* If time allows, server + Coffeescript + D3.js integration