use dtype.metadata for special dtypes

Originally, there was no way to introduce private data into
numpy dtype. So, h5py was abusing the fields of non-compound
datatypes to magically introduce metadata. This was regularly
becoming a problem since numpy did not expect to see this.

Since several years now, numpy has added a metadata-field to
dtype. Let's use it. This is what it is for.
get rid of circular dependency in _conv and h5t

_conv.pyx and h5t.pyx both need the generic python object
hdf5 data type, and until now do some magic lazy generation
of those two. This changes the situation to h5t defining
everything and _conv just using it.
no use for background buffer in objref2pyref

The background buffer in hdf5 conversions (using H5Tconvert) is
very magic and, well, not documented. This change makes less
use of it, in a place where it probably never should have been
used, but lacking proper documentation we never know.
Adding support for reading of VLen data types

This change adds support to read VLens. It adds a converter
in _conv.pyx and makes sure h5t uses it.

This is mostly based on work by Andy Salnikov.
make saving VLens work

After reading, we now can also save VLens. Another converter
is added to convert arrays back to vlens, and allows datasets
to be created.
add tests for vlens

This change adds some unit test to test the new vlen features.
It especially assures that dimension scales can be copied.
remove obsolete test cases

some test cases tested whether the magic fields
in a special dtype are properly set - or not.
Given this is not the case anymore since we are
now using dtype.metadata, this tests are obsolete.
add test for vlens in attributes

Add a test which creates an attribute with
vlens in it.
correct some glitches in python3
Add some corner cases to vlen support

Lists as values, multi-dimensional data and different-type
values are now supported for datasets with vlen datatype.
Merge pull request #355 from tecki/vlen_support

Vlen support