## 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/test/test_insight.py
dashboard_id, _ = self._create_dashboard({})
        insight_id, _ = self._create_insight(
            {"filters": {"events": [{"id": "$pageview"}], "properties": [{"key": "$browser", "value": "Mac OS X"}],},},
        )
        self._add_insight_to_dashboard([dashboard_id], insight_id)
        before_save = DashboardTile.objects.get(dashboard__id=dashboard_id, insight__id=insight_id).filters_hash
        response = self.client.patch(
            f"/api/projects/{self.team.id}/insights/{insight_id}", {"name": "a non-filter change"},
        )
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        after_save = DashboardTile.objects.get(dashboard__id=dashboard_id, insight__id=insight_id).filters_hash
        self.assertIsNotNone(before_save)
        self.assertIsNotNone(after_save)
        self.assertEqual(before_save, after_save)
    def test_saving_a_dashboard_with_new_filters_updates_the_dashboard_tile(self):
        dashboard_id, _ = self._create_dashboard({})
        insight_id, _ = self._create_insight(
            {"filters": {"events": [{"id": "$pageview"}], "properties": [{"key": "$browser", "value": "Mac OS X"}],},},
        )
        self._add_insight_to_dashboard([dashboard_id], insight_id)
        before_save = DashboardTile.objects.get(dashboard__id=dashboard_id, insight__id=insight_id).filters_hash
        response = self.client.patch(
            f"/api/projects/{self.team.id}/dashboards/{dashboard_id}", {"filters": {"date_from": "-7d"},},
        )
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        after_save = DashboardTile.objects.get(dashboard__id=dashboard_id, insight__id=insight_id).filters_hash
        self.assertIsNotNone(before_save)
        self.assertIsNotNone(after_save)
        self.assertNotEqual(before_save, after_save)
    def test_saving_a_dashboard_with_unchanged_filters_does_not_update_the_dashboard_tile(self):