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
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
Merge pull request #356 from kynan/96-setup-requires-numpy

Allows setup.py to execute without having NumPy installed beforehand.