spray/spray — pull request #955 by alekstorm (2014-10-19 18:23:24+00:00)
Title: Extract multiple occurrences in the parameters/formFields directives by suffixing with .*

To extract an:
- `Iterable[String]`: `'amount.*`
- `Iterable[Int]`: `'amount.as[Int].*`
- `Iterable[Int]` with an explicit deserializer: `'amount.as[Int].*(HexInt)`

The explicit deserializer is a parameter of `*`, rather than `as[T]`, because it must be a `FromStringDeserializer`, rather than a `FromStringOptionDeserializer`, which only makes sense for repeated parameters. `'amount.as(HexInt).*` is a compile error.

More than happy to make any changes required to get this merged - in particular, I'd appreciate guidance on what to do about `FormFieldExtractor`, which required changes I'm not altogether satisfied with. In particular, I'm concerned about `getAll` returning a `Seq[FormField]` where each `FormField` has a `rawValue` of `Some` (and if the field is entirely absent, it returns an empty list), while `get` always returns a `FormField` whose `rawValue` is `None` if the field is absent. Essentially, `FormField` seems to be designed for an assumption of one-or-zero occurrences of the field.

This feature came in handy when implementing a geospatial HTTP-based standard called WCS (for the curious, the `subset` parameter of the `GetCoverage` request in the [spec](https://portal.opengeospatial.org/files/09-147r3)).