refactored for Go 1

Hi curtis, 

I tinkered around a bit to make gohaml work with go 1.

Main changes:

* container/vector replaced with slices
* os/error replaced with error
* scanner -> text/scanner (also dealt with return type `rune` instead of int

~~I could not for the life of me figure out why the order of the attributes in the output seems to bob around randomly, though my guess  is it has to do with storing attributes in maps and that you were having similar problems that you dealt with by using .orexpected in the tests. I added .orexpected values to failing tests because I didn't want to screw up the implementation beyond recognition.~~

(Also fixed the attributes show up in no-deterministic-order problem and updated the tests.)

I also ran gofmt over the code, which may or may not have been a good idea as it makes the diffs harder to read for you. The formatting and fixes are in distinct commits though, if you want to examine them individually.

INext steps: I'd like to add an http.Handler function that will prepare input (fyi and to hear your thoughts)