Modifying the AST to remove unwanted whitespace

This PR finally gets rid of the nuisance whitespace and creates
realistic rules on how it behaves.

By using newlines you are opting to trim all whitespace surrounding each
tag.  If you omit newlines your whitespace is treated as intentional and
will not be stripped.