Parameter Dictionary refactor and google_dt fix

# Parameter Dictionaries and Dataset Management #

Lots of changes to the flow of things.

- Parameter Dictionaries are stored in the resource registry.
- Parameter Dictionaries are bootstrapped by a [plugin](https://github.com/lukecampbell/coi-services/blob/google_dt/ion/processes/bootstrap/plugins/bootstrap_parameter_definitions.py).

- Stream Definitions can be defined with a [paramter_dictionary_id](https://github.com/lukecampbell/coi-services/blob/google_dt/ion/services/dm/test/test_dm_end_2_end.py#L257) flag. This is the preferred method for defining stream definitions from now on, it makes an association between the stream definition and the paramter dictionary instead of cramming large dictionaries inside every resource, this will save immense amounts of space.

- Paramter Dictionaries can be retrieved using their [name as a key](https://github.com/lukecampbell/coi-services/blob/google_dt/ion/services/dm/inventory/test/test_dataset_management.py#L169). 


# Interface Changes #
- DatasetManagement
    - Added parameter_dictionary_id field to create_dataset
```
    def create_dataset(self, name='', datastore_name='', view_name='', stream_id='', parameter_dict=None, spatial_domain=None, temporal_domain=None, parameter_dictionary_id='', description=''):
```

    - Added read_parameter_context_by_name to Data, this locates the context resouce based on the name.
```
    def read_parameter_context(self, parameter_context_id=''):
```
    - Removed add_context and remove_context, parameter dictionaries must be immutable.

    - read_parameter_dictionary_by_name, this gets the parameter dictionary **resource** using the name as a key.  *Note: this is only useful when getting the identifier, otherwise use get_parameter_dictionary_by_name* 

    - Pubsub now accepts a parameter dictionary identifier in create_stream_definition

    - New Association: StreamDefinition -> ParameterDictionaryResource

    - New parameter dictionary for supporting google_dt transform: 'google_dt'

# Usage #

To get an existing parameter dictionary, like ctd_parsed_param_dict
the following is a wrapper to a dataset management client which gets the resource and compiles the contexts into a ready-to-use parameter dictionary container (from coverage_model).

```
from ion.services.dm.inventory.dataset_management_service import DatasetManagementService

pdict = DatasetManagementService.get_parameter_dictionary_by_name('ctd_parsed_param_dict')
```


To get the identifier for a parameter dictionary and use it to make a stream definition

```
dataset_management = DatasetManagementServiceClient()
pubsub_management  = PubsubManagementServiceClient()

pdict_id = dataset_management.read_parameter_dictionary_by_name('ctd_parsed_param_dict',id_only=True)

stream_definition_id = pubsub_management.create_stream_definition('parsed_stream_def', parameter_dictionary_id=pdict_id)
```

To make a record dictionary tool with a ctd_parsed_param_dict

```
dataset_management = DatasetManagementServiceClient()
pubsub_management  = PubsubManagementServiceClient()

pdict_id = dataset_management.read_parameter_dictionary_by_name('ctd_parsed_param_dict',id_only=True)

stream_definition_id = pubsub_management.create_stream_definition('parsed_stream_def', parameter_dictionary_id=pdict_id)

rdt = RecordDictionaryTool(stream_definition_id=stream_definition_id)
rdt['time'] = np.arange(20)
rdt['temp'] = ...

```