ENH : bin_edeges helper function

Adds helper function + tests for generating bin edges from
any sub-set of the maximum, minimum, step, and number of bins.
Do we need to consider the case when range_max or range_min are even not float? Then we can't compare them. How about adding isinstance(range_max, np.float) check?

Or this check will be in a higher level interface?