ENH : Added draft of integrate_ROI
TST : added some tests for integrate_ROI
DEV: Updated spectroscopy.integrate_ROI based on comments in grp meeting

1) made function more general by removing references to energy
   replaced energy references with x-value references.
   energy --> x_value_array
   e_min --> x_min
   e_max --> x_max
2) added value check on x_value_array to make sure that the array
   increases in value, and if the array decreases in value, then
   the array is flipped to correct orientation. This check is followed
   by confirmation that values in x_value_array are equally spaced
3) updated documentation
BUG: Corrected test function name typos

Test functions for integrate_ROI were spelled intagrate.
Corrected spelling for both integrate_ROI test functions.
DEV: spectroscopy.py - Fixed Caswell's comments

1) Added array reversal for both counts and x_value_array in the event that
   the arrays are input running highest to lowest value in the independant
   variable array.
2) Removed the x_value_array spacing test which also resolves Tom's comment
   about not using exact float arithmetic for testing.
3) Added a value check on the x_min and x_max values so that in the event
   that the user assigns the maximum bounds to x_min and minimum bounds
   to x_max, the code corrects for this error automatically without
   raising an exception.
DEV: Added unittests for mods to spectroscopy.py

1) Added 2 tests to test_integrate_ROI_compute()
   a) Evaluate case where x_value_array, and compute are entered
      with monotonically decreasing x_array values
   b) Evalute case where all input parameters are entered "backwards"
2) Commented out unit test where all x_min and x_max values are flipped
   since a correction for this case has been added to the code resulting
   in this case NOT resulting in an exception error.
DEV: Finished updating integrate_ROI per Tom's github comments

Finished updating ValueError messages using .format()
Removed auto-correction of max/min boundaries so that ValueError
exception is raised instead.
DEV: Added test case for reversed x_value_array and counts input

The test verifies that if both the 'x_value_array' and 'counts' data sets
are input in reversed order (so that the values are decreasing monotonically)
then both arrays are flipped so that the independent variable values meet
the "monotonically increasing" required condition.
In the event that this reversal occurs, a print statement is generated in
order to notify the user that this reversal has occurred.
DEV: Added logging option. Changed print statement to log warning

Changed the warning about array reversal required for function to work
from a basic print statement to a log warning. I decided to post
the notice as logging.warning() due to the fact that the user really
does need to know if their arrays are stored, or being used in reversed
order, unbeknownst to them.
DEV: Updated test sequence for reversed input arrays per Tom's note
BUG: integrate_ROI typo fix for sign check test and warning message
BUG: Removed logging configuration.

Configuration may be different depending on usage of this function
library. Different uses, or developers, may have different requirements
for logging, or log reporting. So, log configuration belongs one (or
more) levels up in the "program tree."
BUG: Fixed outlier evaluation test from 'foo'*'foo' to 'foo'*'foo'[0]
DEV: Changed "array flipped" log to debug level instead of warning
DEV: added even='avg' key to np.simps() to address odd interval count

Adding this key ensures that integration will proceed regardless
of whether interval count is even or odd.
If speed becomes an issue the 'even' key can be set to 'first' or
'last' since currently integration is completed twice and is averaged.
MNT : white-space related PEP8

 - removed trailing white space
BUG : fixed miss-use of scipy.integrate.simps

The input values to scipy.integrate.simps are of
the form y = f(x) and returns integral_xmin^xmax f(x),
thus passing in the left bin edges will result in computing
the integral with the range shifted by half the distance
between the bins.

To address this did two things

 1. changed documentation of integrate_ROI to reflect
    what is really happening.  This also eliminates the ambiguity of
    what to do about selecting the range, you select all points in the
    range.

 2. added `integarte_ROI_spectrum` which converts `bin_edges` (N
    left edges + 1 right edge -> bin centers and then calls
    `integrate_ROI`
BUG : fixed logic in finding non-monotonic inputs
TST : added test for integrate_ROI_spectrum
Merge branch 'giltis-spectrum_reduce' into spectrum_reduce

Conflicts:
	nsls2/spectroscopy.py
	nsls2/tests/test_spectroscopy.py