Vlen support

This pull request adds support for vlen datatypes, both read and written.
It is based on the previous pull request by Andy Salnikov.

I put some special efforts to enable us to read the attributes created by
dimension scales. It is annoying that an exception is risen every time 
I iterate over the attributes of a dataset with dimension scales.

Have a special look at the first patch which really changes a lot in the
h5py machinery: it starts to make use of dtype.metadata, which has been
around for quite a while now, avoiding many problems that arose when
we abused the dtype fields to store metadata.