## Is your feature request related to a problem?

When setting up dashboards I'd like to filter the stats to a certain page/subdomain. 

## Describe the solution you'd like

Allow adding a extra filters for all graphs on a dashboard (e.g. filter by $current_url)

## Describe alternatives you've considered

Updating every graph in dashboard one-by-one and then reverting them back.

## Additional context

Related to https://github.com/PostHog/posthog/issues/780

Datadog has a decent solution for this: https://docs.datadoghq.com/dashboards/template_variables/, which I think we can simplify and use ourselves.

Came up during #2560 

#### *Thank you* for your feature request – we love each and every one!

posthog/api/dashboard.py
"duplicated": bool(use_dashboard),
                "dashboard_id": use_dashboard,
            },
        )
        return dashboard
    def update(self, instance: Dashboard, validated_data: Dict, *args: Any, **kwargs: Any,) -> Dashboard:
        user = cast(User, self.context["request"].user)
        can_user_restrict = instance.can_user_restrict(user.id)
        if "restriction_level" in validated_data and not can_user_restrict:
            raise exceptions.PermissionDenied(
                "Only the dashboard owner and project admins have the restriction rights required to change the dashboard's restriction level."
            )
        validated_data.pop("use_template", None)  
        if validated_data.get("is_shared") and not instance.share_token:
            instance.share_token = secrets.token_urlsafe(22)
        instance = super().update(instance, validated_data)
        tile_layouts = self.initial_data.pop("tile_layouts", [])
        for tile_layout in tile_layouts:
            DashboardTile.objects.filter(dashboard__id=instance.id, insight__id=(tile_layout["id"])).update(
                layouts=tile_layout["layouts"]
            )
        colors = self.initial_data.pop("colors", [])
        for color in colors:
            DashboardTile.objects.filter(dashboard__id=instance.id, insight__id=(color["id"])).update(
                color=color["color"]
            )
        if "request" in self.context:
            report_user_action(user, "dashboard updated", instance.get_analytics_metadata())
        return instance
    def get_items(self, dashboard: Dashboard):