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
Use setuptools setup_requires to install NumPy before running setup

Use a helper class NumpyExtension to encapsulate the import from
numpy and delay it until NumPy has been installed.

Caveat: if NumPy is not available, it will be installed even for
simple operations like --help or --version
Add tox.ini for automated testing with different Python versions
Merge pull request #357 from kynan/tox

Add tox.ini for automated testing with different Python versions
Use property setter in NumpyExtension class for Python 3 compatibility
Make NumpyExtension a new-style class
Avoid installing NumPy if the user only queries for information
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 #356 from kynan/96-setup-requires-numpy

Allows setup.py to execute without having NumPy installed beforehand.
Merge pull request #355 from tecki/vlen_support

Vlen support