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.
Maybe add some property variants as well.