Output sensible error message when neither Cython nor C sources available
Fall back to distutils setup & Extension if setuptools not available
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