Minor adjustments to make code more readable
Add validity checking for user input
Support many new options for `respectLineBreaks`

Had to rewrite much of the core algorithm in the process. Also fixed
some long standing bugs involving `whitespace` options "line" and "all".
Allow the user provide an array of presets

If two presets in the array set the same option, the later one wins.