Added Vec and some reorganization

Moved *_test.cpp to test/
Moved *_demo.cpp to demo/
Renamed matrix_* to mat_*
Library is now headers-only
Updated README.md
Added common.hpp for common useful functions

=== Vec.hpp notes ===
    norm() and unit_vector() have both template and non-templated versions:
        norm(), unit_vector() may compute incorrect values if the contained type is int
            instead of double, for example.
        norm<T>(), unit_vector<T>() allow a fix to this problem. If you have a Vec<int> i_vec,
        and want to compute the norm accurately, then supply a suitable type:
            i_vec.norm<double>()
        will produce the correct answer.

    Also, how can we allow the user to scale by a different type than the
        type of the template parameter? If we have a Vec<int> and
        we try to scale by a double, we should return a Vec<double>.
        If we have a Vec<double> and scale by an int, we should also
        produce a Vec<double>.