Encode username and password correctly in PhutilURI
Summary: Fixes T4374. We do not encode passwords in URIs correctly, so passwords with, e.g., the @ character do not work correctly.
Test Plan: Added unit tests.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T4374
Differential Revision: https://secure.phabricator.com/D8144