Dual View: Major attribute table update

The main content of this branch is an update of the attribute table which introduces the attribute editor form.

Additionally, the caching algorithm, which was before coded directly inside the attribute table has been redesigned to be usable from other parts of the software as well. It is possible to plug custom indexes to the layer cache what makes it ready for other tasks as well.

Some stuff has been moved to the gui library (e.g. QgsHighlight)

It contains some basic tests for filtering and selection.

It also contains the "select by expression" dialog which is part of another pull request [1] which will be closed, if this pull request gets accepted.

[1]: https://github.com/qgis/Quantum-GIS/pull/406