Avoid conversion to NumPy Scalar

After profiling I noticed that a bottleneck for NumPy scalar operations
occurs when trying to extract the underlying C value from a Python float
because it first converts the Python scalar into its matching NumPy
scalar (e.g. PyFloat -> float64) and then it extracts the C value from
the NumPy scalar.

For some types, it is a lot faster to just extract the value directly
from the Python scalar.

I only did for PyFloat in this modified code but the code is laid out
such that it can be easily extended to other types such as Integers. I
did not do them because I was unsure if there was a special scenario to
handle across OS and/or between 32 and 64 bit platforms. The ratio of
speed to do different operations are listed below (Old time / New time
with modifications). In other words, the bigger the number, the bigger
the speed up we get.

Tested in Python 2.6 Windows

RATIO  TEST
1.1  Array * Array
1.1  PyFloat * Array
1.1  Float64 * Array
1.0  PyFloat + Array
1.3  Float64 + Array
1.1  PyFloat * PyFloat
1.0  Float64 * Float64
4.0  PyFloat * Float64
2.9  PyFloat * vector1[1]
3.9  PyFloat + Float64
9.8  PyFloat < Float64
9.9  PyFloat < Float64
1.0  Create array from list
1.0  Assign PyFloat to all
1.0  Assign Float64 to all
4.2  Float64 * pyFloat * pyFloat * pyFloat * pyFloat
1.0  pyFloat * pyFloat * pyFloat * pyFloat * pyFloat
1.0  Float64 * Float64 * Float64 * Float64 * Float64
1.0  Float64 ** 2
1.0  pyFloat ** 2
Fix indentation
Added example for 2D-histogram with variable bin size.
Fixed two typos.
Got rid of a unit test

This test fails after updating numpy.i to deal with deprecated code.
My investigation into the source of the failure is that the test never
should have passed, so I commented it out.  I could be wrong.
Upgrade numpy.i

The numpy.i file is now compliant with version 1.7 deprecations, but
also works with previous versions of numpy.  I have tested back to
numpy 1.4.1.

Added 4D typemaps and memory-managed typemaps.  These were supplied by
Egor Zindy.

Fixed bugs in 3D typemaps.  I was referencing $3 when I should have
been referencing $4.  Thanks to Egor Zindy for catching this.
Removed doc from list of sub-directories

The doc directory has been moved elsewhere, so I removed the reference
to it in the Makefile.
Re-instated a Python 3 fix
Added Egor's ARGOUTVIEWM_ARRAY3 typemaps
Initialize all DATA_TYPE* data_temp variables to NULL
Updated the numpy.i documentation

The RST documentation file is now consistent with the C macros, C
functions, and list of typemap signatures of the latest numpy.i file.
Updated numpy.i testing documentation

Simple updates to include proper statistics on the number of typemap
signatures supported and the number of individual unit tests
implemented.
Minor adjustments to numpy.i

This includes so formatting adjustments, the removal of two unused
arguments for the make_fortran() function, fixing the number of
supported typemap signatures, including the ARGOUT_ARRAY4 typemap
signature in the comments section, and renumbering the typemap
signatures.
fixed the testResize1 test in testArray.py -- Changed order of the resize arguments in Array2.h and replaced len(XXXnumpyarray) with XXXnumpyarray.size
removed the note about testResize1 failing in testArray.py
ENH: use intrinsics for isnan, isfinite and isinf

Use of intrinsics avoids expensive function calls in tight loops on x86
cpus where these operations are implemented in hardware while still
retaining same portability.
More than doubles performance of np.isnan/isinf/isfinite.
MAINT: check for intrinsics at configure time
ENH: add possibility to add define_macros to extensions
MAINT: mask npy_config.h include with HAVE_NPY_CONFIG_H
MAINT: document intrinsic macro guards