Rethinking dom pt 1

Hey @zencephalon, @benbrostoff, @greg99799:

I took some time to re-evaluate the way in which we were "prepping" our sentences for the dom. 
Here is a benchmark I ran on Rationality against our old "prep_for_dom" with a more streamlined "dom" method: 

puts Benchmark.measure { b.prep_for_dom }
  0.980000   0.040000   1.020000 (  1.239417)
=> nil
puts Benchmark.measure { b.dom }
  0.170000   0.010000   0.180000 (  0.252467)
=> nil
Hooray useless benchmarks -- but moar faster! 

I think now it is definitely work also re-evaluating how we are using local storage (... eg sentences not all hidden in the DOM).  Would love to get your feedback on this. Also, I've been looking into web sockets, shouldn't be too tricky to implement. 

Please let me know of questions, concerns, comments etc. 

-bsj