Adds sharing of domain objects

Adds _assign_domain function - allows ParameterContexts added to a coverage to share the temporal and spatial domain objects of the coverage, rather than just the extents information.

Also allows _assign_domain to be called during load to ensure ParameterContexts use shared domain objects after reloading a coverage