Handle comments preceding operators correctly. Fix #72.

Also, don't emit trailing spaces in some corner cases.
Start moving towards spans for cost calculations.

Spans handle calculating costs for nested expressions more naturally
(since they themselves nest). Some hand-tuned numeric costs will
be needed to compare expressions at the same level of nesting, but
I want to minimize those and lean on expression nesting as the
natural cost function.

This moves a step in that direction. It replaces some costs with
unit-cost spans. Already, it improves some output, and simplifies
the code.
Make spans separate from the chunk list.

This should make it easier to have more spans without
confusing the code that looks in the chunk list.

Regressed perf, though. :(
Optimize. Gets benchmark from ~32ms to ~20ms.

- Only calculate token lines when needed.
- Don't use iterators in hot code.
- Concatenate text chunks.
- Optimize determining split spans.

This biggest remaining bottleneck (by a wide margin)
is the calculation for nested multispits in _evaluateCost.
Remove unneeded cost.
Merge branch 'master' into cost-by-spans

Conflicts:
	lib/src/line_writer.dart
	lib/src/source_visitor.dart
	test/splitting/expressions.stmt
Clean up a bit of detritus after making spans not chunks.
Remove TODO from git.
Merge branch 'master' into cost-by-spans

Conflicts:
	lib/src/source_visitor.dart
Regression test for #33 (which is fixed now).
Merge branch 'master' into 33-regression

Conflicts:
	lib/src/line_splitter.dart
Add debug method for printing split lines.