bug fixes and cleanup.

I want to put this up for PR despite having collab status because it makes some stylistic changes, and i don't want to step on your toes. :)
(the changes are a bit less deep than the line count implies, there's a bit of reordering and renaming)

it fixes:
* zero word truncation bug
* trailing tags in char mode bug

notable changes:
* i've tried to make the state more explicit (grouped into trackedState and options objs)
* introduces more explicit mode for chars vs words
* i've separated limit checking and counting into two different functions
* limit checking now happens first (which is what fixes https://github.com/cgiffard/Downsize/issues/14 and allows for removal of the 'characters + 1' thing)

i hope it's alright. lmk.