Fix a Javelin bug with URI parsing for URIs like "/?&x"

Summary:
Currently, JX.URI fails to make progress while parsing URIs in the form `/?&x`, and loops infinitely instead. This is because the regexp used to parse the query parameters may match the empty string at the beginning of the query string, and continue matching it forever.

Instead, use a more straightforward split/join approach which can't loop.

Test Plan: Added failing (well, infinitely looping) tests; fixed them.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Differential Revision: https://secure.phabricator.com/D5832