[update] more intelligent break on first calculation

Breaking firsts on large sentences is optimized.  Instead of always
breaking on first symbol and rest, it breaks on blocks of terminals on
either end.  This makes calculations such as "Start $" get reduced to
"Start" followed by "$" which removes a lot of redundant calculations.

Signed-off-by: Shahbaz Youssefi <ShabbyX@gmail.com>
[update] early elimination of useless first calculation

When dividing a sentence in pre and post, if pre doesn't have any
nonpartial results (or estimated that it doesn't have), don't caculate
post.

Signed-off-by: Shahbaz Youssefi <ShabbyX@gmail.com>