Object const-correctness.

Const function shouldn̈́'t return anything with which it would be possible
to change object's internal state:

 * It is possible to get non-constant pointer to itself from
   parent().children() array, so parent() cannot be const function.
 * The same applies to scene().
 * It is also possible to get non-constant pointer to itself from
   children()[0].parent(), so children() also cannot be const function.
Scene parent and transformation is now really immutable.

Improved parenting test, added test for transformation. Moved deleted
functions to public section, so the compiler prints error about deleted
functions, not about private functions.
Added missing tests for object dirty status.
Using Vertex Array Objects for mesh drawing.

 * All attribute pointers and buffer binding is now stored in each
   mesh own vertex array object, thus each mesh drawing now needs
   only three OpenGL calls.
 * Removed default VAO from Scene, which fixes unit test crashes.
Trade::MeshData const-correctness.

"Counting" functions are always constant, added const versions of data
accessing functions, so MeshData can be now passed and used as const
reference.
Added normals to Plane primitive.
Storing Light position as Vector4, not Vector3.

Four bytes more, but more convenient when multiplying with camera
matrix.
(Smooth) normals for Cube primitive.
Finally fixed light intensity computation bug in PhongShader.

Both vectors passed to dot() (and thus also reflect()) must be
normalized to achieve desired result.
Possiblity for constructing Vector from one value, like in GLSL.

Marked the constructor as explicit, because we don't want mistakes like
this to happen:

    Matrix4::rotation(1.0f, deg(3.0f)); // oops, swapped axis and angle!

Instead, when calling such constructor, the type must be said
explicitly (initializer-list is forbidden, too):

    Matrix4::rotation(deg(3.0f), Vector3(1.0f)); // okay
Removed Object::scale(GLfloat, bool), as Vector can be used directly.
Explicit default Matrix constructor.

Nothing like this should ever happen:

    1*Vector3::yAxis() // 1 converted to true, converted to Matrix3.
Removed && and std::forward from Matrix and Vector constructors.

Types saved inside Matrix and Vector will be at most time smaller than
or the same size as references to them, so no move semantic and
forwarding is necessary.
Forced exclusive use of bracket operators in Matrix and Vector.

Removed functions at(), set() and add(), everything (and more) can be
now done using operator[]. Accessing matrix elements is now done through
column vectors, e.g.:

    Matrix4 a;
    a.at(row, col); // before
    a[col][row]; // now

Note that because operator[] on Matrix returns column vector (there is
nothing like row vector), the parameter "order" is now swapped.
Vector dot product is now static function instead of operator*().

operator* is used in GLSL for element-wise multiplication, be compatible
with that.
Ability to construct Matrix from column vectors.
Function for getting rotation part of Matrix4.
Using explicit constructors for templated type in Vector.

E.g. T() instead of 0, T(1) instead of 1. Added just-to-be-sure unit
test.
Removed Object::setTransformationFrom().

It was confusing anyway and I can't currently think about any
real use-case of this.
Fluent interface for Object transformation.

Now you can use method chaining while setting Object transformation -
scale, rotation, translation and parent.