Header validation, split multi-value headers into a list

There's a bunch of requirements in the specs for v2 and v3 to validate the contents and format of header names & values.

I've done my best to follow the v2 and v3 specs here, but some things may still not be perfect. In particular, the spec doesn't clearly explain what constitutes the "lowercase ASCII" character set that header names must use. I was referred by Roberto Peon to the HTTP/1.1 spec, which I think gives a sufficient definition. However, I've not yet done the work of excluding various control characters as that spec says I should.

Also, I've defined a format for returning errors that I'm using with header parsing:

```erlang
{error, stream_protocol_error, [{streamid, 438}, {frametype, ?SYN_REPLY}]}
```