TST: add tests for roll function
FIX: roll raises a ValueError is axis > ndim
FIX: handle empty arrays in roll
First attempt at BF for 2028 and added better tests for scalarmath pow function
fixed some style problems
DOC: Used regex to find colons missing spaces which render wrong online, also other spacing or formatting mistakes
STY: drop some else clauses in roll
Fixed a mistake in linalg.eig() documentation.
BUG: Fix generalized ufunc so repeating labels in one input/output is ok
BUG: Missed case of broadcasting onto core dimensions in gufunc
BUG: Make sure the nditer doesn't complain when 0 broadcast dims
TST: Add test for gufunc scalar case
BUG: Fix bug in gufunc scalar case
TST: Test for a generalized ufunc bug, for zero-sized inputs
BUG: Fix for generalized ufunc zero-sized input case
compile fix on linux/mac
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
DOC -- add another paragraph note to ndarray.view docs

Since most numpy operations are not sensitive to underlying data
structure (C-ordered arrays vs fortran-ordered arrays, versus slices or
transposes of arrays, etc.), but structured-array views ARE sensitive to
that, it is worth saying it explicitly in the documentation.
Added example for 2D-histogram with variable bin size.