Adds initial support for better retrieving

All the changes are purely additive and should not affect any existing function.

Adds a new Complex Coverage type: TIMESERIES
TIMESERIES has the ability to do random inserts and random reads with good performance.

Adds a new function to all coverage models: `get_value_dictionary`
Behaves just like `get_parameter_values` except that it returns a dictionary of values, it can slice on the temporal values as well as slice on the domain values and it doesn't require the entire temporal domain to verify slices. A huge improvement for retrieval operations, now we won't have to look at the entire "time" array every time we make a retrieve operation. 

The value dictionaries are sorted IF any subset of the coverages overlap, and duplicates are removed.

Part of [OOIION-1310](https://jira.oceanobservatories.org/tasks/browse/OOIION-1310)

[Covmodel_test](http://buildbot.oceanobservatories.org:8010/builders/covmodel_test/builds/144)