Merge "identifiers" branch

Resolve #398 by merging the identifiers branch, containing a totally re-worked identifier management system and improved thread safety.  The new configuration is designed to provide the following benefits:

1. True thread safety, across the high-level and low-level interfaces, with no manual acquisition of locks required in user code.
2. An identifier management system which does away with the open() classmethods on low-level objects.  This prepares us for HDF5 1.10, in which recycling ends and the identifier management system can be turned off.  See h5py/_objects.pyx for a description of how this works.
3. Fully backwards-compatible with existing user code.
4. As a side benefit, File objects are now automatically closed when they become unreachable (when all HDF5 objects within them are closed).  Addresses #246.
5. Should also resolve the problem where an external links can't be resolved if the file is already open.

Also is a possible fix for #361, #244, #359, #198; more investigation/testing is needed.