Stop whitespace trimming in attributes

This pull request fixes a bug where leading/trailing whitespace inside an attribute value is trimmed.

It also lays the groundwork for fixing bugs like #20 as now we can know to tokenize everything up to `<` as a String if `isInTag == false`.

Before:
```dart
XmlElement foo = XML.parse('''<foo a=' hello ' b=" goodbye "></foo>''');
print(foo.toString()); // <foo a="hello" b="goodbye"></foo>
```

After:
```dart
XmlElement foo = XML.parse('''<foo a=' hello ' b=" goodbye "></foo>''');
print(foo.toString()); // <foo a=" hello " b=" goodbye "></foo>
```

I've also created tests for this behavior and fixed the ones that broke from the change.

Thanks for reading! :smile: