ENH: Add step argument for linspace (and small fixes for corner cases)

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). This was requested in gh-630. Also fixes corner cases where the dtype was not preserved, even though the function supports complex numbers fine.

I kind of like the functionality, but it seems to me like a pure convenience function that, in general code maybe fails unexpectedly (i.e. given very large floats or such), or maybe even works on one computer and not on the next in some examples.