Added convenience methods to `Uri`

1. added test case for `Uri` to check a query parameter without value followed by fragment
2. changed interpretation of a query parameter without value
3. added convenience methods to `Uri` to manipulate parameters in query string more easily
I wrote 'maybe' to underline that in case the manipulation of query string results to an equal `Uri` we can save the overhead to create a new instance and return `this` directly. Does it make sense?