Split the project into several compilation units

The Makefile defines several compilation units.
Changes in Vector.cu (or other files) will not require to recompile the whole source code but only some parts.

Moreover it gives the code more flexibility and makes it more readable.