Add MetricSet and ConversationMetricSet to allow a way for metrics to be looked up by their names (will need this for dashboard building)
Start of dashboard infrastructure
Implement visit_dicts (recursively visits nested dicts in a collection, needed for dashboard layout parsing)
Tests for DashboardLayout
Change conversation definition to use ConversationMetricSet when retrieving metrics with get_metrics()
Allow a conversation view definition to get the conversation's metrics from the conversation definition
Fixes for go.dashboard.Dashboard
Remove redundant error handling in Dashboard.sync()
Use VumiGoDjangoTestCase instead of GoTestCase for dashboard test cases
Add DiamondashApiClient for syncing with diamondash, along with accompanying FakeDiamondashApiClient for tests
Tests for go.dashboard.Dashboard
Add ensure_handler_fields decorator for DashboardLayout handlers
Add a ConversationDashboardLayout

Conflicts:
	go/dashboard/tests/test_base.py
Change DiamondashApiClient to instantiated at the class level for Dashboard
Add ConversationDashboardView
Make diamondash api urls properly in DiamondashApiClient
More useful exception messages for diamondash api failures
Fix dashboard config errors in ConversationViewDefinition.build_layout()
Add a 'get_diamondash_target_name()' to GoMetric
Use GoMetric.get_diamondash_metric() for ConversationDashboardLayout's metric handlers