Refactor sentence iterator

this implements a version of `sentnece_iterator` that expects files
formatted by `util/preprocess.py`.

this is great:

- it's almost 3x faster at reading the data
- it gets rid of the boost dependency
- which means we can go back to simple `-Wall -Werror` builds
- which means travis builds *should* start working
- it works w/ stl algos like `distance` and `copy`
- it's copyable
- it also consumes a bit less memory
- it's way less code

we can optimize it some more too, i've got an SO question [here][so],
and there's some useful stuff in the comments.

one odd behavior that i don't really know how to address is that the `*`
and `->` behaviors incur different performance hits. since the deref
operator returns an instance it needs to copy the `sentence`. maybe this
is okay as it is? the thing is we can't just make this return a
reference because it would be referencing the class's copy, which will
change on the next iterator increment.

ready for review by @calvinmm and @abhibhad 

[so]: http://stackoverflow.com/questions/23315178/improve-iterator-performance