Fix for Accept header parsing for custom accept parameters

According to RFC2616 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html) Accept header may contain different accept-params besides quality. Take a look at example from RFC:
```Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,
               text/html;level=2;q=0.4, */*;q=0.5```

With current implementation such header will be parsed incorrectly (level=1 in text/html;level=1 will be parsed as quality). This PR adds better support for such parameters by adding 'params' field to Accept type object, and using it in negotiation.

Also, did you consider to use https://github.com/federomero/negotiator?