AAM Builder Fixes

This PR relates to the AAM issues of #297. The changes involve code refactoring, bug fixing, adding verbose and `__str__` methods, adding unit tests and improving/adding documentation.

#### A list of things that are completed:
__AAM Builder__
- [x] Rename `diagonal_range` parameter to `normalization_diagonal`.
- [x] Rename `scaled_levels` parameter to `scaled_shape_models` and make sure it works correctly.
- [x] Set proper default parameter values (default AAM performance).
- [x] Add `verbose` parameter.
- [x] Add progress percentage in printing.
- [x] Print expected RAM size.
- [x] Define `__str__` method.
- [x] Add ability to define different `feature_type` per level.
- [x] Add ability to pass different `max_shape_components` and `max_appearance_components` per level.
- [x] Documentation
- [x] Unit tests for training AAMs.

__AAM Fitter__
- [x] Define `__str__` method in `LucasKanadeAAMFitter`.
- [x] Print proper information when `verbose`.
- [x] Define unit tests for fitting AAMs.
- [x] Remove `residual` parameter from `fitter`.

__Fitting result__
- [x] Remove `print_fitting_info()` method.
- [x] Define `__str__` method.


#### Things to be done in the next PRs:
__AAM Fitter__
- [x] Define __more__ unit tests for fitting AAMs. Some of the methods return error, which has to to with the trained models.

__Fitting result__
- [ ] Define a `fitting_result.image()` method that returns the fitted image object. Initial, final and gt shapes should be labelled with _.
- [ ] Define `__str__` method more properly with more printing info.
- [ ] Replace `fitted` flag with `converged`.
- [ ] Remove `n_fittings`.
- [ ] Revise all `fitting_result.view_*` methods.
- [ ] Define an overall `view` method.
- [ ] Define a `fitting_result.view_fitting_on_image()` method.

__benchmark__
- [ ] Define AAM-related benchmark funtions.