Merge pull request #23 from alexlarsson/master

Fix matrix inversion typo
tests: Macro-ize compare_matrices()

This way, we'll print out the location of the assertion failure in the
right place.
quaternion: Add to_angles() conversion

We have initializers from various formats (Euler angles, angle/axis,
matrix), but we are missing a conversion function from quaternion to
Euler angles.
quaternion: Use deg-to-rad macro
quaternion: Check out arguments

They are not documented as being optional, but we can relax the
requirement in the future, if needed.
vec: Add negate() operator
docs: Fix typo
vec: Add equality check function

We want to check if two vectors are the same, or have the same values.
Add a plane type

Planes are useful in fully 3D canvases, as they can be used for things
like frustum-based culling.

The graphene_plane_t data structure represents a plane via a normal
vector pointing towards the origin of the plane; and a constant value
representing the distance from the origin along the normal vector.
Fix typo in the comment
plane: Add more initializers
build: Bump up the version

We added new API, and we already branched, so we need to bump up the
configure.ac version.
graphene-macros.h: Fix MSVC Compilation

Fix the typedef line when we don't have stdbool.h on Visual Studio, and
include stdbool.h on Visual Studio 2013 and later, as it does ship with it.
graphene-simd4f.h: Define Macros for MSVC Builds

...when it is possible to build the libraries with SSE2 intrinistics on
Visual Studio.  It is more or less like the SSE2/GCC version, but due to
syntactical differences we need to define these as macros for Visual
Studio, and there are still a some differences when we convert between
__m128 and __m128i.
graphene-line-segment.h: Allow Build on MSVC

MSVC is quite picky about types in regards to initialization, so split up
the initialization line to make everyone happy.
graphene-alloc.c: Allow aligned_alloc Behaviour on MSVC

MSVC supports aligned memory allocation, but with some differences, namely:

-It uses _aligned_malloc(), which does the same thing but with inverted
 parameters with aligned_alloc().

-Memory allocated with _aligned_malloc() must be freed with
 _aligned_free(), otherwise the program will abort.
graphene-simd4x4f.h: Allow Build On Visual Studio

Fix the initialization in graphene_simd4x4f_init() so that compilers will
be happy with the types, and add a definition for
graphene_simd4x4f_transpose_in_place(s) that is suitable for Visual Studio
when we have SSE2 intrinistic support.  The SSE2 initrinistic support, due
to ABI issues, like the GCC builds, are only supported on x64 builds, and
possibly x86 builds on MSVC 2013 and later using __vectorcall.
tests/graphene-test-compat.h: Allow Build on MSVC

Define graphene_assert_fuzzy_equals that is suitable on Visual Studio
builds, as it does not support typeof, and there are some differences in
syntax.  Later Visual Studio versions support similar functionality with
decltype.
Benchmark: Allow Aligned Allocation on MSVC

MSVC supports aligned allocation via _aligned_malloc(), which is similar to
aligned_alloc(), but with the parameters inverted.  Also, on MSVC, whatever
that is allocated with _aligned_malloc() must be freed with
_aligned_free(), otherwise the program will abort() internally by the CRT.
graphene-bench-utils.h: Export Symbols Via Compiler Attributes

Decorate the symbols in the headers so that the symbols can be exported, as
graphene-bench-utils.c needs to be built as a DLL.