BUG: preserve datatype in linspace corner-cases

The linspace corner cases always returned float, but the rest of the
function did support complex or high precision floating point numbers.
ENH: Add safe step argument to linspace

This adds a step argument to linspace, however the step argument is only
used to determine the integer number of steps. It must be possible to safely
determine the number of steps (given floating point accuracy), otherwise
an error raised. This means it cannot be used when start, stop or step are
inaccurate due to previous calculations.

This was requested in gh-630.