Overhaul of storage with improved order parameter support

This contains mostly the changes to simplify storage and allow better support for order parameters.
Took me quite a while and will need some more documentation. But in general I abstracted mostly the netcdf away and used
utility functions which are part of object_storage.py

This also!!! stores now Snapshots so

Trajectories are lists of Snapshots and are stored as such
Snapshots point to a Configuration, a Momentum and have a reversible momentum flag

Snapshots can loaded and saved as all other objects, too.

Orderparameters are saved using
```
storage.cv.save(op)
```
can be loaded as a dict without the actual function that does the calculation using
```
storage.cv.load('name')
```
or
```
storage.cv.load(idx)
```
restoring the data in an existing op is done using (for continuation, etc.)
```
storage.cv.restore(op)
```

Also orderparameters are not stored as a long list with the same position for tha value as the corresponding snapshot / or other object used. That means that the orderparameter for a snapshot stored at ID 4 is found at position 4 in its table. That makes it much easier for other people to process the data should they want to.

Actually, there seems to be bug in netcdf4-python which occurs if you have 2 or more unlimited dimensions. I had this when I tried to store all orderparamters in one bis list. Now I have a table listing all orderparameters with their name and each orderparameter has a seprate table that is used.
The bug included segmentation faults and very bad python error messages I had never seen like wrong hash when freeing object... This is apparently related to errors in C-related functions.

I fixed also minor things in the related files. Like snapshot loading to make it work. Were only very minor changes.

Hope you will get an impression. Let me know what you think.