Implementation of guadian custom permissions

This PR implements or ends implementing the following django-guardian custom permissions, that will integrate the existing standard ones (change_resourcebase, add_resourcebase, delete_resourcebase):

* view_resourcebase
* change_resourcebase_metadata
* change_resourcebase_permissions
* download_resourcebase
* publish_resourcebase
* change_layer_data
* change_layer_style

All of the permissions are tested, and the user interface has been updated to let the user manage the new permissions structure for every GeoNode object type (layer/map/document)
Some basic documentation update is provided.

Some observations:

* view_resourcebase and change_resourcebase_metadata must be handled in the catalog as well, see #1726 
* download_resourcebase is only consistent with the GeoNode interface. If a user is able to guess the WFS link for a layer, he will be still able to download it. This should be solved by proxying GeoServer and implementing GNIP-47
* change_layer_style is handled proxying the REST request to GeoServer, therefore the GeoServer plugin has not been impacted by this
* publish_resourcebase implementation will be provided with a different PR in the next days
@capooti this might be not necessary anymore since https://github.com/GeoNode/geonode/commit/c49ca3916d90e6a69b44eaa5ad17fb0c1afa910f#diff-4279bd4e8eed60f681aa4f3e1cc9f7fcR105 is already returning a 401 page if the user does not have permissions