Create SliceSignal class and add a __getitem__ method using SliceSignal to the Signal class

SliceSignal uses the new Slice class to perform slicing onto a Signal instance

TODO: add self.navigation and self.spectrum attributs to slice only the corresponding kind of dimension
With last changes added
Solve a bug with single-valued slices

Spectra could not be plotted when a single value was used for slicing such as in s[3,:,:]
More consistant behavior with floats

When a single float was given as a slice, value(in units):value(in units)+1(in units) was wrongly calculated
Rename spec to signal
Remove _get_spec and _get_nav methods that were only used once
Add s.spectrum and s.navigation special slicing attributes

One could slice using s[...] to access and slice all the dimensions at once

Now one can slice only either the navigation or the spectral part of his data
Ignore *.swp files
Style corrections: break long ines
Merge branch 'slicing' of github.com:hyperspy/hyperspy into slicing

Conflicts:
	hyperspy/misc/slices.py
Rename spectrum to signal
SpecialSlicer doesn't need to inherit from the Signal class after all
BUG-FIX: s.squeeze() now remove every len=1 axes at once

When doing 'for axe in self.axes_manager.axes', CPython 2.X (at least) actually executes 'for i in xrange(len(self.axes_manager.axes)):    axe = self.axes_manager.axes[i];'

When the first axes is removed (because len(axe) == 1), xrange(len(self.axes_manager.axes)) is evaluated once again BUT i remains equal to 1, NOT 0.

As a result, if self.axes_manager.axes contains [Y(len=1), X(len=1), E(len=2048)], i=0, axes[i=0]=Y is first removed. xrange(len(self.axes_manager.axes)) is evaluated to [0, 1], and i=1. But, axes[i=1] == E now
Use s.squeeze() to remove useless axes
BUG-FIX: Slicing not possible with 1D signals

numpy.append has a bug/undocumented feature: np.append([1,2,3], []) returns floats as in array([1.,2.,3.])

A quick test was written to avoid np.append feeding with empty lists.

A second bug kicked out: bool([0]) == True BUT bool(array([0])) == False. Solved by list conversion
Simplify SliceSignal
Include SliceSignal into Signal.__getitem__
Include Slice into DataAxis._get_slice
Merge branch 'master' into slicing
BUG-FIX: when the slice step was != 1 the axis scale was not changed accordingly