Some initial work on runtime configuration system.
ConstexprMath.h: Add missing include.
Expr: Simplify expression evaluation.
Add TypeListRemoveDuplicates.h.
Configuration: Implement expression cache.
Expr: Simplify usage of floating point constants.
Expr: Simplify usage of non-FP constants.
Add JoinTypeListList.h.
PrinterMain: Use only one ConfigCache.
meta/Expr.h: Less boilerplate, fix return type of fmin/fmax.
meta/Expr.h: Cosmetic changes.
PrinterMain: Rename Cache to Config.
Expr, Configuration: Make constexpr work properly.

We need a macro for retrieving from ConfigCache if constexpr is to be propagated.
Expr: Implement FP constant definitions in a nicer way.

It's not nice to define value() in the anonymous struct because Expr defines value() as well.
Move ConfigManager instance into PrinterMain.

A minor design change was needed to fix circular dependencies that would otherwise occur. Now, the configuration option types themselves are not Expr's, but ConfigManager::e() is used to turn them into Expr's.
Move ConstexprConfigManager to out of Configuration.h.
Configuration: Fix to compile work with non-constexpr.

Non-constexpr Expr's have no value() function.
Initial dummy version of RuntimeConfigManager.
Implement very basic runtime confguration management.

Configuration options can be changed and printed out by index only (which is barely useful).

Print option value: M925 I<index>
Change option value: M926 I<index> V<value> (no V for default value)
Apply configuration: M927
Make runtime configuration commands work with option names, not indices.