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