add error reporting when [if] is evaluated with no actions

I frequently make the mistake of using {IF_VAR} but forgetting to
use [then] with it. One solution is to use my own macro, but the
better solution is to add proper error reporting to if. If the
engine parses an [if] tag with no [then], [else], or [elseif], it
should flag an error... otherwise these mistakes are generally
silent and very difficult to find.

One possible criticism is that this will slow things down slightly, since we would have to keep a local variable when evaluting ifs.

Possible resolutions:
1. Who cares.
2. Drop support for having multiple [then], or multiple [else], children of [if], since this makes no syntactic sense anyways... This would speed up the current implementation by requesting only one child instead of a list of children, and require no local variables to detect the miss.
3. Patch the preprocessor to automatically merge any multiple [then] and multiple [else] subchildren of [if]. If someone is using insert tag syntax... too bad, they can just insert into the previous [then] or [else] instead.