Empty Query string support 

I noticed that query strings that are parsed and then re-serialized are not identical.  In other words if you parse "?" and it turns into {'':''}.  When this is serialized again, it turns into "?=".

This change ensures that empty query strings "?" are parsed as an empty object {}, rather than an object with an empty key-value pair {'':''}.  The change looks large, but is really just adding one condition and indenting some lines.  Includes a test change to validate the expected behavior.

I originally implemented this by ignoring empty keys, but I see you have an explicit test for this case, so I assume it is desired behavior for empty keys to be allowed.