## 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_dashboard.py
dashboard_id, _ = self._create_dashboard({"name": "dashboard"})
        dashboard_two_id, _ = self._create_dashboard({"name": "dashboard two"})
        filter_dict = {
            "events": [{"id": "$pageview"}],
            "properties": [{"key": "$browser", "value": "Mac OS X"}],
            "insight": "TRENDS",
        }
        query_counts: List[int] = []
        queries: List[List[Dict[str, str]]] = []
        count, qs = self._get_dashboard_counting_queries(dashboard_id)
        query_counts.append(count)
        queries.append(qs)
        
        for i in range(5):
            self._create_insight({"filters": filter_dict, "dashboards": [dashboard_id]})
            count, qs = self._get_dashboard_counting_queries(dashboard_id)
            query_counts.append(count)
            queries.append(qs)
        
        self.assertLess(query_counts[0], query_counts[1])
        
        self.assertTrue(
            all(j - i == 2 for i, j in zip(query_counts[2:], query_counts[3:])),
            f"received: {query_counts} for queries: \n\n {queries}",
        )
    def test_no_cache_available(self):