Lots of smallish changes

- Improve error reporting, particularly for Parser.End()
- Move event definitions from events.go to parser.go
- Reduce noise in event definitions
- Rename Parser.Parse() to Next()
- Rename Parser.Skip() to Escape()
- Rename a lot of unexported variables in parser.go
- Move utilities in parser_test.go to the bottom
- Various documentation improvements
Rename parse() to emit() in parser_test.go
Implement Parse(data []byte)

Also define the Type and Node types.
Implement Node.MarshalJSON() and Node.WriteJSON()