Share code between Navigator and WorkerNavigator

Also shares code between Location and WorkerLocation. This has been done
by introducing NavigatorInfo and UrlHelper.

Fixes #3159
Merge pull request #3400 from gilles-leblanc/issue-3279

Share code between Navigator and WorkerNavigator