Fix Expression.hpp #define / #undef

add missing '#undef EXPRESSION_CTOR',
replace RESULT_OF_FUNCTOR_HPP with the correct RESULT_OF_MAKE_EXPR,
move the defininition of EXPRESSION_CTOR where it belongs to,
typedef FirstChild to make the constructor more clear
why do you indent those, there seems to be no contect (namespace) or anything?