Support using external service for eco benefits
Add "default_permission" field to Role model

When adding map features to an instance we want to create default permissions to edit their fields for all existing roles, but there was no way to tell what permissions to use. Now we can store a default permission on each role and use that.

Also run a data migration to set the default role on our 3 existing roles in all instances
Refactor add_all_permissions_on_model_to_role() and rename as add_default_permissions()

* Use role's default permission instead of passing a permission argument
* "instance" arg is no longer optional
* Allow adding permissions for all of an instance's roles (instead of passing explicit roles to use)
* Allow adding permissions for all Authorizable models (instead of passing explicit models to use)

Also use all subclasses of Authorizable when setting up permissions for tests
Give each instance a list of map feature types it uses

* Stored as a property on instance.config
* Also add helper method to MapFeature
Support UDFs and multi-table export

UDF fields cannot be used directly in a values query since they don't
resolve to valid field names.

However, django's 'extra' method helps us save it from itself. We can
manually pass in definitions for udf fields. For example:

```python
Plot.objects.values('id', 'udf:Owner')
```

Can be written as:

```python
extra_select={'udf:Owner': 'treemap_plot.udf->Owner'}
extra={'select': extra_select}

Plot.objects.extra(*extra).values('id', 'udf:Owner')
```

The `extra_select_and_values_for_model` generates these two pieces of
information (dict and field list) based on a given user's permissions

Fixes #1012
Fixes #1013
Fixup registration labels
Merge pull request #1049 from ahinz/topic/fixup-reg-labels

Fixup registration labels
Only show photos for audits if the photos haven't been deleted.
Fix showing more than 10 pages.

Doing a slice on an xrange is illegal, you need to use range
Remove unused UdfModel property
Add backend functionality for getting UDF collection audits
Show UDF collection audits on the plot detail sidebar
Adding trans tag in a few places
Cleanup on edits and recent user edits:

Use model display names when possible
Don't show a filtering link for models not supported by the backend
Use the UDF collection name instead of udf:pk for display model name
Show UDF collection audits on the edits and user detail pages
Merge pull request #1048 from maurizi/topic/editLogsForUdfCollections

Edit logs for UDF collections
Merge pull request #1045 from RickMohr/add-map-feature-to-instance

Support for adding new map feature types to an instance
Add "default_permission" field to Role model

When adding map features to an instance we want to create default permissions to edit their fields for all existing roles, but there was no way to tell what permissions to use. Now we can store a default permission on each role and use that.

Also run a data migration to set the default role on our 3 existing roles in all instances
Refactor add_all_permissions_on_model_to_role() and rename as add_default_permissions()

* Use role's default permission instead of passing a permission argument
* "instance" arg is no longer optional
* Allow adding permissions for all of an instance's roles (instead of passing explicit roles to use)
* Allow adding permissions for all Authorizable models (instead of passing explicit models to use)

Also, update test utilities to use add_default_permissions() (and related refactoring)