added trig convience functions
Free-function declarations.

Separate the free-function declarations from the definitions and
move the declarations to the top of the file below the vector class
definition.
scalar multiplication can result in a vector of a new type, i.e. 5.0 * vector<int,3>{1, 2, 3}; results in a vector<double,3>
Use std::common_type to determine the resulting type of the scalar multiplication rather than decltype(T{}*Scalar{})
remove the is_floating point restriction from instantiating the angle class template
add declarations for free-functions and fix the awful initial implementation of the inverse trig functions
rename to vector impl
Add partial template specializations for vector and provide some useful typedefs
ignore anon struct/union warnings
update tests for the vector specializations