Added some list parser combinators, for pairs and maps

I've added some list parsers:

 - `pair[A, B](pa: ListParser[A], pb: ListParser[B], delimiter: Char = ','): ListParser[(A,B)]` to parse pairs

 - `def delimitedValues[A](p: ListParser[A], delimiter: Char = ','): ListParser[Seq[A]]`

This ones generalises the `delimited` method on `ListParser[A]` to allow `A` to be something else than a `String`. This is a breaking change for clients using a different delimiter than the default one (people might have written `string.delimiter(implicitly[String =:= String], delimiter = ':'` which is not very pleasing anyway)

 - finally `def keyValueMap[K, V](key: ListParser[K], value: ListParser[V], entriesDelimiter: Char = ',', keyValueDelimiter: Char = ':'): ListParser[Map[K, V]]` for a key value map. This uses the previous combinators.
Would it be possible to just get rid of the default arg? Maybe add common ones as constants if we want to make it easy. I know it was already like that - but would be nice if it wasn't.