New runable operator framework. Convert range operator to this. Fixes some memory issues when looping.

- Fix memory error in expression_state when running children where
WPL_EXPRESSION_MAX was checked instead of the actual length of children
- Implement runable operators. This is to be used for operators which
have advanced functionality which works across different types.
- Convert value_range to new runable operator
- Fix the replace_variables function for structs so that the old
variables are modified with new values instead of allocating new ones
(caused segfaults) in loops
- Remove some macros in operators source files
- In the expression framework, the previously not used run_child is
replaced with run_runable_operator. The runables use the same state
tree, but they take value exp_state, lhs and rhs as arguments. This
for them to work with temporary values in expressions when loops, as
these otherwise would have to be saved in a state causing segfaults.
- Add unary operator * to structs which can be used to prevent a
struct from being initialized/constructed. Memory is still allocated,
so usage of these variables if not set to anything is undefined. Meant
to be used in foreach loops. Should possibly replace this with a
template pointer type.