Rewrite of the token reflow logic.

Use classes to encapsulate the logic. Make everything into an atom,
including spaces and newlines. This simplifies things greatly and makes
it easier to modify the tokens if we decide late in the game that one
format is better than another.
Add an indent object.

An indent object simplifies how we calculate when an object can be
placed on a line.
Revert "Add an indent object."

This reverts commit d39515f7652f291f33478578381abb921770bf13.
Add an 'indent' object.

This actually simplifies a lot of bookkeeping. We don't have to pass
around how much of the line we have left. It can be calculated from the
fact that we have the indentation available.
Use unicode instead of repr. Also rename things to something better.
Merge branch 'master' into experiment

Conflicts:
	autopep8.py
Add broken example
Properly account for ending commas and brackets.

If they weren't accounted for, they could be placed on the next line. We
prefer to have ending delimiters on the same line as the last element of
the container.
Rename variables to keep them more consistent.
Some random cleanups.
If the line DOES consist of only whitespace, then we declare it empty.
Cleanup how we determine when to add a space.
Cleanup whitespace.
Convert some prediates into boolean attributes.
Merge remote-tracking branch 'gwelymernans/experiment' into experiment

Conflicts:
	autopep8.py
Remove unused variable
Update tests