ephy-uri-helpers: Dot no modify the URI when it doesn't have garbage

We are currently decoding/encoding the uri query and returning it
unchanged when it doesn't have garbage. We should return NULL instead in
such case.
This fixes the session management issues in some sites like gmail, but
because the URLs processed don't actually have garbage. A URL with
garbage and an underscore will still fail. This patch adds a unit test
cover that particular case.

https://bugzilla.gnome.org/show_bug.cgi?id=730464
uri-tester: don't use regular expressions for trivial checks

https://bugzilla.gnome.org/show_bug.cgi?id=730129
uri-tester: don't recompile the regexes every time they are used

https://bugzilla.gnome.org/show_bug.cgi?id=730129
uri-tester: don't pass strings around just to free them later

https://bugzilla.gnome.org/show_bug.cgi?id=730129
ephy-uri-helpers: Don't re-encode parameters ourselves

Implement Dan Winship's approach to detecting unwanted parameters
by reusing the original key pair values (without decoding/encoding)
when they are wanted, and simply dropping them when not.

See https://bugzilla.gnome.org/show_bug.cgi?id=724724#c14

https://bugzilla.gnome.org/show_bug.cgi?id=730464
ephy-uri-helpers: Handle keys without a value

Fixes a crash with a URI such as:
http://www.test.com/?some&valid&query

https://bugzilla.gnome.org/show_bug.cgi?id=730464