DEV: New branch including only avizo file IO related files

Removed fileops.py so that pull requests focused on avizo file-IO
will only include updates to the avizo file-IO functions. Fileops
is also being reduced to a series of files each focused on a separate
file type IO functionality.
DEV: Pythonic improvements to code as per Tom's comments
DEV: Pythonic code improvement as per Tom's suggestions
DEV: Removed fileops.

The fileops module is being broken out and fileIO tools that
are particularly pertinent are being broken out into separate
files for ease of reference, PR, and modularity. Each filetype
will have its own branch so multiple file type functions can be
in development at same time.
DEV: Changed try/except to appropriate if/elif code commands

While the try/except format that was included originally worked,
using try/except without expecting an exception to be raised
when the try function fails is an inappropriate use of the try
function. Using if/elif statements is more appropriate for what
I am trying to do, which is to selectively populate a metadata
dictionary by reading lines from the original header string.
DEV: Converted try/except functions to more appropriate if/elif

While the original try/except function series worked for the metadata
dictionary population that I was attempting, the use of if/elif
is more appropriate since try/except expects an exception to be raised
if, or when the try function fails. Since I am simply reading the
original header string and populating a new metadata dictionary the
use of if/elif is more appropriate.
Merge branch 'avizo_io' into file_io
Merge branch 'master' of github.com:NSLS-II/NSLS2 into file_io

Conflicts:
	nsls2/core.py
DEV: Updated core.py to include energy as a keyword
DEV: Updated docstrings and removed dict entry extra space (per PEP8)
ENH : minor speed up

for squaring **2 beats np.power

In [37]: tt = np.arange(1000, dtype=float)

In [38]: %timeit tt**2
1000000 loops, best of 3: 1.95 µs per loop

In [39]: %timeit np.power(tt, 2)
100000 loops, best of 3: 15.4 µs per loop
API : moved fit_quad_to_peak -> fitting/__init__.py

This is a fitting (albeit a simple one) function and should
not be hidden in the spectroscopy module.
ENH : added 1D peak refinement

This is a bit of frame work to refine the locations of peaks (or
valleys in principle) of 1D curves.  The assumption is that the
location of the extrema has been identified to pixel(sampling)-level
accuracy and the user has a function that will refine a single peak.

This commit includes
 - peak_refinement
    - logic to loop over all the peaks
    - call refine on each peak
    - marshal the output back to the user
 - two refinement functions
ENH : add filter to return the N tallest peaks
ENH : add filter function based on peak height

Uses ptp over a fixed window.  This is a proxy for aspect ratio/second
derivative assuming the peak is symmetric.
MNT : minor pep8 clean up
ENH : added classes for calibration data

 - HKL : subclass of namedtuple for dealing with hkl values
   - it _is_ a tuple
   - ensures values are always integers
   - provides convenience method length to take L2 norm
 - CalibrationAngles : class to hold 2theta calibration data
   - knows about:
      - lattice parameter
      - standard name
      - the two theta values
      - the hkl for those angles
      - the wave length used for measurement
   - protects data via read-only properties to reduce the chances of
     accidental mutation
   - provides convenience method `convert_2theta` which will return
     the angles at a different wave length

 - convert_two_theta function
   - math to calculate 2theta angles at other wavelengths.
TODO : improve calibration data access class
ENH : added calibration module

 - blind estimation of d from a radially integrated powder-pattern
BUG : fixed transpose error

Now returns the center (row, col)