Add `detail::while_` and `detail::until`.
Use List::repeat instead of handwritten one in the Matrix example.
CppCon Matrix: Implement the `one` method
Do not use variable templates for `one`, `zero` & al.

This is because using variable templates limits the objects to being
constexpr, or to not being constexpr (but then initializing the object
becomes an issue).

This is also a step towards being compilable by GCC 4.9, but that only
would not justify the change.
Use `true_type`/`false_type` in std type traits.