Removing uneccessary code.

No point in using a QAbstractItemModel if GridView interprets the model as a
list, use QAbstractListModel. Defining a user role just for the name isn't
worth it.
Define images for tiles in QML.
Inform user of number of levels in collection.
Handle signals when going to previous level.
Show message when level is complete.
Rename variable to conform to coding style.
Level parser fix.
Save and restore window size and position.
New TODOs.
Animate movement of boxes.
Qbs build file.
Use UDLRudlr notation for undo.
steps and pushes shouldn't be writable.
Removing Level::serialize.

In its current form it's not useful(nor used) and will make planned refactors
more dificult.
Refactoring separating board and level.

This creates a more clear separation between model and controller.
The Board is only holds information to be displayed by QML, while level
enforces the rules of the game. This will make it easier to further
refactor both and to implement a more robust undo/redo mechanism.
Refactor Box to have QPoint instead of x and y.

This makes usage of the class easier since most elsewhere positions are
handled with QPoint.
Do level parsing in a single stage.
Removing unused include.
Use list instead of vector of vector for tiles.

Since GridView expects a single dimensional model there is no point
in having a 2 dimensional sotrage of tiles.
Use Repeater instead of GridView to display map.

The GridView made item positioning less clear and nescissated more code.