Share code between Navigator and WorkerNavigator

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