Introduce @QueryMap and encoded variant.

The existing version was very broken. This standardizes behavior under two new annotations which define how they apply to the URL properly.

@dnkoutso