Add model.get_component. Finding a component by name in a model

Useful when Hyperspy is called a library, since the components are
not directly callable.
Fixes #175 , plotting line spectra was raising an exception.
Rename get_component -> __getitem__ .
Merge pull request #2 from francisco-dlp/model_get_specific_component

Rename get_component -> __getitem__ .
Change component.name to property: check for duplicate when namechange

If the component is a part of a model, and the name of the model is
changed, the component will check if there are any components with
the same name.
Change model.append behavior: checks for duplicate component names

If a component with the same name already exists, the name will be
add _0, _1, _2, ...
If the component has no name, it will get the same name as its
_id_name: "Gaussian", "Voigt",...
Change model.__getitiem__ behavior: check if components have same name

__getitem__ will now raise an error it finds several components with
the same name
Add docs for calling components in a model
Merge branch 'master' into model_get_specific_component
Add tests for calling and naming components in a model
Merge branch 'master' into model_get_specific_component_cleanup

Conflicts:
	hyperspy/component.py
	hyperspy/model.py
Fix docstring in model.__getitem__
Fix typo in model.__getitem__ docstring
Fix some whitespaces in model.append
Raise exception when appending a component that is already in the model.
Automatic style corrections courtesy of autopep8.
Rename test to simply TestModel, slim the spectrum down, add test for component already in model and use assert_is instead of assert_equal.
Automatic style corrections courtesy of autopep8.
Correct wrong method name
Add ability to specify components by name and index to all methods that take components as arguments. Add tests, Model docstring and extra example to the User Guide.