Replaced non-disambiguating `typename` with `class`.¹

1: Want to keep uniformity with use. typename has different
meanings depending on its placement, whereas class only means
one thing in the wonderful World of Templates.
config: removed AM_CONSTEXPR.¹

1: No need to have this ugly thing lying around.
Replaced header guards with #pragma once.
Moved linear interface out of class and into separate headers.

config: added AM_CONFIG_LINEAR_IMPLICIT_INTERFACE.¹

linear:
	moved all out-of-class-possible operators into interface headers;²
	split types out into vector_types.hpp and matrix_types.hpp;
	added vector_interface.hpp and matrix_interface.hpp;
	removed verbose, needless template and function parameters.

1: Whether the interface headers should be included even if the
header doesn't need the interface.

2: This is mainly in the interest of compile time. Other headers that
only need the *type* won't have to incur the cost of including the
interface. This adds some fluff to out-of-class operators, but now
they're all uniform.
doc/Doxyfile: bumped to 1.8.7, enabled ALLOW_UNICODE_NAMES.