Separate abspath from _remote_path, the intents are different.
* bzrlib/transport/sftp.py: (SFTPUrlHandling._combine_paths_respecting_home_dir): New method. (SFTPUrlHandling.abspath): Take home dir into account explicitely. (SFTPUrlHandling._remote_path): Simplified. (SFTPTransport.__init__): Cleanup cloning.
* bzrlib/transport/http/_urllib.py: Revert the previous _remote_path -> _unqualified_abspath renaming.
* bzrlib/transport/http/_pycurl.py: Revert the previous _remote_path -> _unqualified_abspath renaming.
* bzrlib/transport/http/__init__.py: (HttpTransportBase._remote_path): Re-introduce _remote_path instead of _unqualified_abspath.
* bzrlib/transport/ftp.py: (FtpTransport.__init__): Cleanup cloning. (FtpTransport.clone): Deleted. The inherited one is enough.
* bzrlib/transport/__init__.py: (ConnectedTransport.__init__): Copy password *after* splitting the url if needed. (ConnectedTransport.clone): Generic clone method. (ConnectedTransport._split_url): Cleanup. (ConnectedTransport._initial_split_url): New method that daughter classes can override. (ConnectedTransport.abspath): Do not call _remote_path, the intent is different.
* bzrlib/tests/test_transport_implementations.py: Cleanup imports. (TransportTests.test_clone_preserve_info): New test.
* bzrlib/tests/test_sftp_transport.py: (FakeSFTPTransport): Add a dummy get_connection method. (SFTPNonServerTest.test_parse_url_with_home_dir): Temporarily disable the password checking.