Add identifier like Unquoted Strings.

Allow identifiers as a special low-effort string. Make foo and "foo" the same. Make key and keygroup names be strings.

i.e 
```
[foo.baz]
key = bar
```
and 

```
["foo"."baz"]
"key" = "bar"
```
Are the same thing. 

Unquoted strings cannot have dots, square brackets or spaces in, or start with a number.

Note: ["foo.bar"] isn't the same as [foo.bar]. Dots inside quotes do not count.

Rationale:

- Easier to tokenize TOML files. 
- Grammar is simpler
- Keygroups can have .'s in the name, but you have to quote them. 

Additionally,  eliminates a whole slew of stupid edge cases in current spec, i.e

```
'= foo'  - an empty key
'[]' - an empty keygroup
'[.]' - two nested empty named keygroups
'a = foo = bar' - under current spec, could be parsed as 'a = foo', 'bar'
```

This should make the format easier to write a parser for, and lets people have strings as keys.